UNPKG

54.1 kBJavaScriptView Raw
1!function(window){if(!(void 0!==window.window&&window.document||window.require&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message,data:err.data,file,line,col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return moduleName},window.require=function(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.require.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.require.tlns)return console.log("unable to load "+id);var path=function(id,paths){var testPath=id,tail="";for(;testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\/*$/,"/")+(tail||alias.main||alias.name);if(!1===alias)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}(id,window.require.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.require.id=id,window.require.modules[id]={},importScripts(path),window.require(parentId,id)},window.require.modules={},window.require.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.require.id)):1==arguments.length&&(factory=id,deps=[],id=window.require.id),"function"==typeof factory){deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.require(id,childId)};window.require.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.slice(0,factory.length).map((function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}})));return returnExports&&(module.exports=returnExports),module}}}else window.require.modules[id]={exports:factory,initialized:!0}},window.define.amd={},require.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)require.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.require("ace/lib/event_emitter").EventEmitter,oop=window.require("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data})},this.emit=function(name,data){postMessage({type:"event",name,data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw new Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),sender=window.sender=window.initSender();var clazz=require(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define("ace/lib/oop",[],(function(require,exports,module){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}})),ace.define("ace/range",[],(function(require,exports,module){"use strict";var Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return 1==(cmp=this.compare(end.row,end.column))?1==(cmp=this.compare(start.row,start.column))?2:0==cmp?1:0:-1==cmp?-2:-1==(cmp=this.compare(start.row,start.column))?-1:1==cmp?42:0},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)&&(!this.isEnd(row,column)&&!this.isStart(row,column))},this.insideStart=function(row,column){return 0==this.compare(row,column)&&!this.isEnd(row,column)},this.insideEnd=function(row,column){return 0==this.compare(row,column)&&!this.isStart(row,column)},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?row<this.start.row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?column<=this.end.column?0:1:0:column<this.start.column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(this.end.row<firstRow)end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(this.start.row<firstRow)start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row,column};else var end={row,column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range})),ace.define("ace/apply_delta",[],(function(require,exports,module){"use strict";exports.applyDelta=function(docLines,delta,doNotValidate){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":if(1===delta.lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}})),ace.define("ace/lib/event_emitter",[],(function(require,exports,module){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;i<listeners.length&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;i<listeners.length;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;if(this.on(eventName,(function newCallback(){_self.off(eventName,newCallback),callback.apply(null,arguments)})),!callback)return new Promise((function(resolve){callback=resolve}))},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){eventName||(this._eventRegistry=this._defaultHandlers=void 0),this._eventRegistry&&(this._eventRegistry[eventName]=void 0),this._defaultHandlers&&(this._defaultHandlers[eventName]=void 0)},exports.EventEmitter=EventEmitter})),ace.define("ace/anchor",[],(function(require,exports,module){"use strict";var oop=require("./lib/oop"),EventEmitter=require("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),void 0===column?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=function(delta,point,moveIfEqual){var deltaIsInsert="insert"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;if($pointsInOrder(point,deltaStart,moveIfEqual))return{row:point.row,column:point.column};if($pointsInOrder(deltaEnd,point,!moveIfEqual))return{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)};return{row:deltaStart.row,column:deltaStart.column}}(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row,column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old,value:pos})}},this.detach=function(){this.document.off("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):row<0?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),column<0&&(pos.column=0),pos}}).call(Anchor.prototype)})),ace.define("ace/document",[],(function(require,exports,module){"use strict";var oop=require("./lib/oop"),applyDelta=require("./apply_delta").applyDelta,EventEmitter=require("./lib/event_emitter").EventEmitter,Range=require("./range").Range,Anchor=require("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},0==="aaa".split(/a/).length?this.$split=function(text){return text.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(text){return text.split(/\r\n|\r|\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=match?match[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\r\n"==text||"\r"==text||"\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{(lines=this.getLines(range.start.row,range.end.row))[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return this.getLength()<=1&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start,end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:row<0?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return null==column&&(column=line.length),{row,column:column=Math.min(Math.max(column,0),line.length)}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row,column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){var column=0;(row=Math.min(Math.max(row,0),this.getLength()))<this.getLength()?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row,column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start,end,action:"insert",lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start,end,action:"remove",lines:this.getLinesForRange({start,end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start,end,action:"remove",lines:this.getLinesForRange({start,end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1);var deleteFirstNewLine=(lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1))==this.getLength()-1&&firstRow>0,deleteLastNewLine=lastRow<this.getLength()-1,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){row<this.getLength()-1&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){return range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty()?range.start:text==this.getTextRange(range)?range.end:(this.remove(range),text?this.insert(range.start,text):range.start)},this.applyDeltas=function(deltas){for(var i=0;i<deltas.length;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?delta.lines.length<=1&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4?this.$splitAndapplyLargeDelta(delta,2e4):(applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta)))},this.$safeApplyDelta=function(delta){var docLength=this.$lines.length;("remove"==delta.action&&delta.start.row<docLength&&delta.end.row<docLength||"insert"==delta.action&&delta.start.row<=docLength)&&this.applyDelta(delta)},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length-MAX+1,row=delta.start.row,column=delta.start.column,from=0,to=0;from<l;from=to){to+=MAX-1;var chunk=lines.slice(from,to);chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}delta.lines=lines.slice(from),delta.start.row=row+from,delta.start.column=column,this.applyDelta(delta,!0)},this.revertDelta=function(delta){this.$safeApplyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;i<l;i++)if((index-=lines[i].length+newlineLength)<0)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:index+lines[l-1].length+newlineLength}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;i<row;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document})),ace.define("ace/lib/lang",[],(function(require,exports,module){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\s\s*/,trimEndRegexp=/\s\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;i<l;i++)array[i]&&"object"==typeof array[i]?copy[i]=this.copyObject(array[i]):copy[i]=array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;key<obj.length;key++)copy[key]=deepCopy(obj[key]);return copy}if("[object Object]"!==Object.prototype.toString.call(obj))return obj;for(var key in copy={},obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;i<arr.length;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;i<=array.length;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},exports.escapeHTML=function(str){return(""+str).replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,(function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})})),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}})),ace.define("ace/worker/mirror",[],(function(require,exports,module){"use strict";require("../range").Range;var Document=require("../document").Document,lang=require("../lib/lang"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(""),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on("change",(function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;i<data.length;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}if(_self.$timeout)return deferredUpdate.schedule(_self.$timeout);_self.onUpdate()}))};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)})),ace.define("ace/mode/lua/luaparse",[],(function(require,exports,module){!function(exports){"use strict";var input,options,length;exports.version="0.1.4";var defaultOptions=exports.defaultOptions={wait:!1,comments:!0,scope:!1,locations:!1,ranges:!1},EOF=1,StringLiteral=2,Keyword=4,Identifier=8,NumericLiteral=16,Punctuator=32,BooleanLiteral=64,NilLiteral=128,VarargLiteral=256;exports.tokenTypes={EOF,StringLiteral,Keyword,Identifier,NumericLiteral,Punctuator,BooleanLiteral,NilLiteral,VarargLiteral};var errors=exports.errors={unexpected:"Unexpected %1 '%2' near '%3'",expected:"'%1' expected near '%2'",expectedToken:"%1 expected near '%2'",unfinishedString:"unfinished string near '%1'",malformedNumber:"malformed number near '%1'"},ast=exports.ast={labelStatement:function(label){return{type:"LabelStatement",label}},breakStatement:function(){return{type:"BreakStatement"}},gotoStatement:function(label){return{type:"GotoStatement",label}},returnStatement:function(args){return{type:"ReturnStatement",arguments:args}},ifStatement:function(clauses){return{type:"IfStatement",clauses}},ifClause:function(condition,body){return{type:"IfClause",condition,body}},elseifClause:function(condition,body){return{type:"ElseifClause",condition,body}},elseClause:function(body){return{type:"ElseClause",body}},whileStatement:function(condition,body){return{type:"WhileStatement",condition,body}},doStatement:function(body){return{type:"DoStatement",body}},repeatStatement:function(condition,body){return{type:"RepeatStatement",condition,body}},localStatement:function(variables,init){return{type:"LocalStatement",variables,init}},assignmentStatement:function(variables,init){return{type:"AssignmentStatement",variables,init}},callStatement:function(expression){return{type:"CallStatement",expression}},functionStatement:function(identifier,parameters,isLocal,body){return{type:"FunctionDeclaration",identifier,isLocal,parameters,body}},forNumericStatement:function(variable,start,end,step,body){return{type:"ForNumericStatement",variable,start,end,step,body}},forGenericStatement:function(variables,iterators,body){return{type:"ForGenericStatement",variables,iterators,body}},chunk:function(body){return{type:"Chunk",body}},identifier:function(name){return{type:"Identifier",name}},literal:function(type,value,raw){return{type:type=type===StringLiteral?"StringLiteral":type===NumericLiteral?"NumericLiteral":type===BooleanLiteral?"BooleanLiteral":type===NilLiteral?"NilLiteral":"VarargLiteral",value,raw}},tableKey:function(key,value){return{type:"TableKey",key,value}},tableKeyString:function(key,value){return{type:"TableKeyString",key,value}},tableValue:function(value){return{type:"TableValue",value}},tableConstructorExpression:function(fields){return{type:"TableConstructorExpression",fields}},binaryExpression:function(operator,left,right){return{type:"and"===operator||"or"===operator?"LogicalExpression":"BinaryExpression",operator,left,right}},unaryExpression:function(operator,argument){return{type:"UnaryExpression",operator,argument}},memberExpression:function(base,indexer,identifier){return{type:"MemberExpression",indexer,identifier,base}},indexExpression:function(base,index){return{type:"IndexExpression",base,index}},callExpression:function(base,args){return{type:"CallExpression",base,arguments:args}},tableCallExpression:function(base,args){return{type:"TableCallExpression",base,arguments:args}},stringCallExpression:function(base,argument){return{type:"StringCallExpression",base,argument}},comment:function(value,raw){return{type:"Comment",value,raw}}};function finishNode(node){if(trackLocations){var location=locations.pop();location.complete(),options.locations&&(node.loc=location.loc),options.ranges&&(node.range=location.range)}return node}var index,token,previousToken,lookahead,comments,tokenStart,line,lineStart,scopes,scopeDepth,globals,slice=Array.prototype.slice,indexOf=(Object.prototype.toString,function(array,element){for(var i=0,length=array.length;i<length;i++)if(array[i]===element)return i;return-1});function indexOfObject(array,property,element){for(var i=0,length=array.length;i<length;i++)if(array[i][property]===element)return i;return-1}function sprintf(format){var args=slice.call(arguments,1);return format=format.replace(/%(\d)/g,(function(match,index){return""+args[index-1]||""}))}function extend(){for(var src,prop,args=slice.call(arguments),dest={},i=0,length=args.length;i<length;i++)for(prop in src=args[i])src.hasOwnProperty(prop)&&(dest[prop]=src[prop]);return dest}function raise(token){var error,col,message=sprintf.apply(null,slice.call(arguments,1));throw void 0!==token.line?(col=token.range[0]-token.lineStart,(error=new SyntaxError(sprintf("[%1:%2] %3",token.line,col,message))).line=token.line,error.index=token.range[0],error.column=col):(col=index-lineStart+1,(error=new SyntaxError(sprintf("[%1:%2] %3",line,col,message))).index=index,error.line=line,error.column=col),error}function raiseUnexpectedToken(type,token){raise(token,errors.expectedToken,type,token.value)}function unexpected(found,near){if(void 0===near&&(near=lookahead.value),void 0!==found.type){var type;switch(found.type){case StringLiteral:type="string";break;case Keyword:type="keyword";break;case Identifier:type="identifier";break;case NumericLiteral:type="number";break;case Punctuator:type="symbol";break;case BooleanLiteral:type="boolean";break;case NilLiteral:return raise(found,errors.unexpected,"symbol","nil",near)}return raise(found,errors.unexpected,type,found.value,near)}return raise(found,errors.unexpected,"symbol",found,near)}function lex(){for(skipWhiteSpace();45===input.charCodeAt(index)&&45===input.charCodeAt(index+1);)scanComment(),skipWhiteSpace();if(index>=length)return{type:EOF,value:"<eof>",line,lineStart,range:[index,index]};var charCode=input.charCodeAt(index),next=input.charCodeAt(index+1);if(tokenStart=index,isIdentifierStart(charCode))return scanIdentifierOrKeyword();switch(charCode){case 39:case 34:return scanStringLiteral();case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return scanNumericLiteral();case 46:return isDecDigit(next)?scanNumericLiteral():46===next?46===input.charCodeAt(index+2)?scanVarargLiteral():scanPunctuator(".."):scanPunctuator(".");case 61:return scanPunctuator(61===next?"==":"=");case 62:return scanPunctuator(61===next?">=":">");case 60:return scanPunctuator(61===next?"<=":"<");case 126:return scanPunctuator(61===next?"~=":"~");case 58:return scanPunctuator(58===next?"::":":");case 91:return 91===next||61===next?scanLongStringLiteral():scanPunctuator("[");case 42:case 47:case 94:case 37:case 44:case 123:case 125:case 93:case 40:case 41:case 59:case 35:case 45:case 43:case 38:case 124:return scanPunctuator(input.charAt(index))}return unexpected(input.charAt(index))}function skipWhiteSpace(){for(;index<length;){var charCode=input.charCodeAt(index);if(isWhiteSpace(charCode))index++;else{if(!isLineTerminator(charCode))break;line++,lineStart=++index}}}function scanIdentifierOrKeyword(){for(var value,type;isIdentifierPart(input.charCodeAt(++index)););return isKeyword(value=input.slice(tokenStart,index))?type=Keyword:"true"===value||"false"===value?(type=BooleanLiteral,value="true"===value):"nil"===value?(type=NilLiteral,value=null):type=Identifier,{type,value,line,lineStart,range:[tokenStart,index]}}function scanPunctuator(value){return index+=value.length,{type:Punctuator,value,line,lineStart,range:[tokenStart,index]}}function scanVarargLiteral(){return{type:VarargLiteral,value:"...",line,lineStart,range:[tokenStart,index+=3]}}function scanStringLiteral(){for(var charCode,delimiter=input.charCodeAt(index++),stringStart=index,string="";index<length&&delimiter!==(charCode=input.charCodeAt(index++));)92===charCode?(string+=input.slice(stringStart,index-1)+readEscapeSequence(),stringStart=index):(index>=length||isLineTerminator(charCode))&&(string+=input.slice(stringStart,index-1),raise({},errors.unfinishedString,string+String.fromCharCode(charCode)));return string+=input.slice(stringStart,index-1),{type:StringLiteral,value:string,line,lineStart,range:[tokenStart,index]}}function scanLongStringLiteral(){var string=readLongString();return!1===string&&raise(token,errors.expected,"[",token.value),{type:StringLiteral,value:string,line,lineStart,range:[tokenStart,index]}}function scanNumericLiteral(){var character=input.charAt(index),next=input.charAt(index+1),value="0"===character&&"xX".indexOf(next||null)>=0?readHexLiteral():readDecLiteral();return{type:NumericLiteral,value,line,lineStart,range:[tokenStart,index]}}function readHexLiteral(){var digit,fractionStart,exponentStart,digitStart,fraction=0,binaryExponent=1,binarySign=1;for(digitStart=index+=2,isHexDigit(input.charCodeAt(index))||raise({},errors.malformedNumber,input.slice(tokenStart,index));isHexDigit(input.charCodeAt(index));)index++;if(digit=parseInt(input.slice(digitStart,index),16),"."===input.charAt(index)){for(fractionStart=++index;isHexDigit(input.charCodeAt(index));)index++;fraction=input.slice(fractionStart,index),fraction=fractionStart===index?0:parseInt(fraction,16)/Math.pow(16,index-fractionStart)}if("pP".indexOf(input.charAt(index)||null)>=0){for(index++,"+-".indexOf(input.charAt(index)||null)>=0&&(binarySign="+"===input.charAt(index++)?1:-1),exponentStart=index,isDecDigit(input.charCodeAt(index))||raise({},errors.malformedNumber,input.slice(tokenStart,index));isDecDigit(input.charCodeAt(index));)index++;binaryExponent=input.slice(exponentStart,index),binaryExponent=Math.pow(2,binaryExponent*binarySign)}return(digit+fraction)*binaryExponent}function readDecLiteral(){for(;isDecDigit(input.charCodeAt(index));)index++;if("."===input.charAt(index))for(index++;isDecDigit(input.charCodeAt(index));)index++;if("eE".indexOf(input.charAt(index)||null)>=0)for(index++,"+-".indexOf(input.charAt(index)||null)>=0&&index++,isDecDigit(input.charCodeAt(index))||raise({},errors.malformedNumber,input.slice(tokenStart,index));isDecDigit(input.charCodeAt(index));)index++;return parseFloat(input.slice(tokenStart,index))}function readEscapeSequence(){var sequenceStart=index;switch(input.charAt(index)){case"n":return index++,"\n";case"r":return index++,"\r";case"t":return index++,"\t";case"v":return index++,"\v";case"b":return index++,"\b";case"f":return index++,"\f";case"z":return index++,skipWhiteSpace(),"";case"x":return isHexDigit(input.charCodeAt(index+1))&&isHexDigit(input.charCodeAt(index+2))?(index+=3,"\\"+input.slice(sequenceStart,index)):"\\"+input.charAt(index++);default:if(isDecDigit(input.charCodeAt(index))){for(;isDecDigit(input.charCodeAt(++index)););return"\\"+input.slice(sequenceStart,index)}return input.charAt(index++)}}function scanComment(){tokenStart=index,index+=2;var character=input.charAt(index),content="",isLong=!1,commentStart=index,lineStartComment=lineStart,lineComment=line;if("["===character&&(!1===(content=readLongString())?content=character:isLong=!0),!isLong){for(;index<length&&!isLineTerminator(input.charCodeAt(index));)index++;options.comments&&(content=input.slice(commentStart,index))}if(options.comments){var node=ast.comment(content,input.slice(tokenStart,index));options.locations&&(node.loc={start:{line:lineComment,column:tokenStart-lineStartComment},end:{line,column:index-lineStart}}),options.ranges&&(node.range=[tokenStart,index]),comments.push(node)}}function readLongString(){var character,stringStart,level=0,content="",terminator=!1;for(index++;"="===input.charAt(index+level);)level++;if("["!==input.charAt(index+level))return!1;for(index+=level+1,isLineTerminator(input.charCodeAt(index))&&(line++,lineStart=index++),stringStart=index;index<length;){if(isLineTerminator((character=input.charAt(index++)).charCodeAt(0))&&(line++,lineStart=index),"]"===character){terminator=!0;for(var i=0;i<level;i++)"="!==input.charAt(index+i)&&(terminator=!1);"]"!==input.charAt(index+level)&&(terminator=!1)}if(terminator)break}return content+=input.slice(stringStart,index-1),index+=level+1,content}function next(){previousToken=token,token=lookahead,lookahead=lex()}function consume(value){return value===token.value&&(next(),!0)}function expect(value){value===token.value?next():raise(token,errors.expected,value,token.value)}function isWhiteSpace(charCode){return 9===charCode||32===charCode||11===charCode||12===charCode}function isLineTerminator(charCode){return 10===charCode||13===charCode}function isDecDigit(charCode){return charCode>=48&&charCode<=57}function isHexDigit(charCode){return charCode>=48&&charCode<=57||charCode>=97&&charCode<=102||charCode>=65&&charCode<=70}function isIdentifierStart(charCode){return charCode>=65&&charCode<=90||charCode>=97&&charCode<=122||95===charCode}function isIdentifierPart(charCode){return charCode>=65&&charCode<=90||charCode>=97&&charCode<=122||95===charCode||charCode>=48&&charCode<=57}function isKeyword(id){switch(id.length){case 2:return"do"===id||"if"===id||"in"===id||"or"===id;case 3:return"and"===id||"end"===id||"for"===id||"not"===id;case 4:return"else"===id||"goto"===id||"then"===id;case 5:return"break"===id||"local"===id||"until"===id||"while"===id;case 6:return"elseif"===id||"repeat"===id||"return"===id;case 8:return"function"===id}return!1}function isUnary(token){return Punctuator===token.type?"#-~".indexOf(token.value)>=0:Keyword===token.type&&"not"===token.value}function isCallExpression(expression){switch(expression.type){case"CallExpression":case"TableCallExpression":case"StringCallExpression":return!0}return!1}function isBlockFollow(token){if(EOF===token.type)return!0;if(Keyword!==token.type)return!1;switch(token.value){case"else":case"elseif":case"end":case"until":return!0;default:return!1}}function createScope(){scopes.push(Array.apply(null,scopes[scopeDepth++]))}function exitScope(){scopes.pop(),scopeDepth--}function scopeIdentifierName(name){-1===indexOf(scopes[scopeDepth],name)&&scopes[scopeDepth].push(name)}function scopeIdentifier(node){scopeIdentifierName(node.name),attachScope(node,!0)}function attachScope(node,isLocal){isLocal||-1!==indexOfObject(globals,"name",node.name)||globals.push(node),node.isLocal=isLocal}function scopeHasName(name){return-1!==indexOf(scopes[scopeDepth],name)}exports.lex=lex;var trackLocations,locations=[];function createLocationMarker(){return new Marker(token)}function Marker(token){options.locations&&(this.loc={start:{line:token.line,column:token.range[0]-token.lineStart},end:{line:0,column:0}}),options.ranges&&(this.range=[token.range[0],0])}function markLocation(){trackLocations&&locations.push(createLocationMarker())}function pushLocation(marker){trackLocations&&locations.push(marker)}function parseChunk(){next(),markLocation();var body=parseBlock();return EOF!==token.type&&unexpected(token),trackLocations&&!body.length&&(previousToken=token),finishNode(ast.chunk(body))}function parseBlock(terminator){var statement,block=[];for(options.scope&&createScope();!isBlockFollow(token);){if("return"===token.value){block.push(parseStatement());break}(statement=parseStatement())&&block.push(statement)}return options.scope&&exitScope(),block}function parseStatement(){if(markLocation(),Keyword===token.type)switch(token.value){case"local":return next(),parseLocalStatement();case"if":return next(),parseIfStatement();case"return":return next(),parseReturnStatement();case"function":return next(),parseFunctionDeclaration(parseFunctionName());case"while":return next(),parseWhileStatement();case"for":return next(),parseForStatement();case"repeat":return next(),parseRepeatStatement();case"break":return next(),parseBreakStatement();case"do":return next(),parseDoStatement();case"goto":return next(),parseGotoStatement()}return Punctuator===token.type&&consume("::")?parseLabelStatement():(trackLocations&&locations.pop(),consume(";")?void 0:parseAssignmentOrCallStatement())}function parseLabelStatement(){var name=token.value,label=parseIdentifier();return options.scope&&(scopeIdentifierName("::"+name+"::"),attachScope(label,!0)),expect("::"),finishNode(ast.labelStatement(label))}function parseBreakStatement(){return finishNode(ast.breakStatement())}function parseGotoStatement(){var name=token.value,label=parseIdentifier();return options.scope&&(label.isLabel=scopeHasName("::"+name+"::")),finishNode(ast.gotoStatement(label))}function parseDoStatement(){var body=parseBlock();return expect("end"),finishNode(ast.doStatement(body))}function parseWhileStatement(){var condition=parseExpectedExpression();expect("do");var body=parseBlock();return expect("end"),finishNode(ast.whileStatement(condition,body))}function parseRepeatStatement(){var body=parseBlock();expect("until");var condition=parseExpectedExpression();return finishNode(ast.repeatStatement(condition,body))}function parseReturnStatement(){var expressions=[];if("end"!==token.value){var expression=parseExpression();for(null!=expression&&expressions.push(expression);consume(",");)expression=parseExpectedExpression(),expressions.push(expression);consume(";")}return finishNode(ast.returnStatement(expressions))}function parseIfStatement(){var condition,body,marker,clauses=[];for(trackLocations&&(marker=locations[locations.length-1],locations.push(marker)),condition=parseExpectedExpression(),expect("then"),body=parseBlock(),clauses.push(finishNode(ast.ifClause(condition,body))),trackLocations&&(marker=createLocationMarker());consume("elseif");)pushLocation(marker),condition=parseExpectedExpression(),expect("then"),body=parseBlock(),clauses.push(finishNode(ast.elseifClause(condition,body))),trackLocations&&(marker=createLocationMarker());return consume("else")&&(trackLocations&&(marker=new Marker(previousToken),locations.push(marker)),body=parseBlock(),clauses.push(finishNode(ast.elseClause(body)))),expect("end"),finishNode(ast.ifStatement(clauses))}function parseForStatement(){var body,variable=parseIdentifier();if(options.scope&&scopeIdentifier(variable),consume("=")){var start=parseExpectedExpression();expect(",");var end=parseExpectedExpression(),step=consume(",")?parseExpectedExpression():null;return expect("do"),body=parseBlock(),expect("end"),finishNode(ast.forNumericStatement(variable,start,end,step,body))}for(var variables=[variable];consume(",");)variable=parseIdentifier(),options.scope&&scopeIdentifier(variable),variables.push(variable);expect("in");var iterators=[];do{var expression=parseExpectedExpression();iterators.push(expression)}while(consume(","));return expect("do"),body=parseBlock(),expect("end"),finishNode(ast.forGenericStatement(variables,iterators,body))}function parseLocalStatement(){var name;if(Identifier===token.type){var variables=[],init=[];do{name=parseIdentifier(),variables.push(name)}while(consume(","));if(consume("="))do{var expression=parseExpectedExpression();init.push(expression)}while(consume(","));if(options.scope)for(var i=0,l=variables.length;i<l;i++)scopeIdentifier(variables[i]);return finishNode(ast.localStatement(variables,init))}if(consume("function"))return name=parseIdentifier(),options.scope&&scopeIdentifier(name),parseFunctionDeclaration(name,!0);raiseUnexpectedToken("<name>",token)}function parseAssignmentOrCallStatement(){var expression,marker,previous=token;if(trackLocations&&(marker=createLocationMarker()),null==(expression=parsePrefixExpression()))return unexpected(token);if(",=".indexOf(token.value)>=0){for(var exp,variables=[expression],init=[];consume(",");)null==(exp=parsePrefixExpression())&&raiseUnexpectedToken("<expression>",token),variables.push(exp);expect("=");do{exp=parseExpectedExpression(),init.push(exp)}while(consume(","));return pushLocation(marker),finishNode(ast.assignmentStatement(variables,init))}return isCallExpression(expression)?(pushLocation(marker),finishNode(ast.callStatement(expression))):unexpected(previous)}function parseIdentifier(){markLocation();var identifier=token.value;return Identifier!==token.type&&raiseUnexpectedToken("<name>",token),next(),finishNode(ast.identifier(identifier))}function parseFunctionDeclaration(name,isLocal){var parameters=[];if(expect("("),!consume(")"))for(;;)if(Identifier===token.type){var parameter=parseIdentifier();if(options.scope&&scopeIdentifier(parameter),parameters.push(parameter),consume(","))continue;if(consume(")"))break}else{if(VarargLiteral===token.type){parameters.push(parsePrimaryExpression()),expect(")");break}raiseUnexpectedToken("<name> or '...'",token)}var body=parseBlock();return expect("end"),isLocal=isLocal||!1,finishNode(ast.functionStatement(name,parameters,isLocal,body))}function parseFunctionName(){var base,name,marker;for(trackLocations&&(marker=createLocationMarker()),base=parseIdentifier(),options.scope&&attachScope(base,!1);consume(".");)pushLocation(marker),name=parseIdentifier(),options.scope&&attachScope(name,!1),base=finishNode(ast.memberExpression(base,".",name));return consume(":")&&(pushLocation(marker),name=parseIdentifier(),options.scope&&attachScope(name,!1),base=finishNode(ast.memberExpression(base,":",name))),base}function parseTableConstructor(){for(var key,value,fields=[];;){if(markLocation(),Punctuator===token.type&&consume("["))key=parseExpectedExpression(),expect("]"),expect("="),value=parseExpectedExpression(),fields.push(finishNode(ast.tableKey(key,value)));else if(Identifier===token.type)key=parseExpectedExpression(),consume("=")?(value=parseExpectedExpression(),fields.push(finishNode(ast.tableKeyString(key,value)))):fields.push(finishNode(ast.tableValue(key)));else{if(null==(value=parseExpression())){locations.pop();break}fields.push(finishNode(ast.tableValue(value)))}if(",;".indexOf(token.value)>=0)next();else if("}"===token.value)break}return expect("}"),finishNode(ast.tableConstructorExpression(fields))}function parseExpression(){return parseSubExpression(0)}function parseExpectedExpression(){var expression=parseExpression();if(null!=expression)return expression;raiseUnexpectedToken("<expression>",token)}function binaryPrecedence(operator){var charCode=operator.charCodeAt(0),length=operator.length;if(1===length)switch(charCode){case 94:return 10;case 42:case 47:case 37:return 7;case 43:case 45:return 6;case 60:case 62:return 3;case 38:case 124:return 7}else if(2===length)switch(charCode){case 46:return 5;case 60:case 62:case 61:case 126:return 3;case 111:return 1}else if(97===charCode&&"and"===operator)return 2;return 0}function parseSubExpression(minPrecedence){var expression,marker,precedence,operator=token.value;if(trackLocations&&(marker=createLocationMarker()),isUnary(token)){markLocation(),next();var argument=parseSubExpression(8);null==argument&&raiseUnexpectedToken("<expression>",token),expression=finishNode(ast.unaryExpression(operator,argument))}if(null==expression&&null==(expression=parsePrimaryExpression())&&(expression=parsePrefixExpression()),null==expression)return null;for(;operator=token.value,!(0===(precedence=Punctuator===token.type||Keyword===token.type?binaryPrecedence(operator):0)||precedence<=minPrecedence);){"^"!==operator&&".."!==operator||precedence--,next();var right=parseSubExpression(precedence);null==right&&raiseUnexpectedToken("<expression>",token),trackLocations&&locations.push(marker),expression=finishNode(ast.binaryExpression(operator,expression,right))}return expression}function parsePrefixExpression(){var base,name,marker,isLocal,expression,identifier;if(trackLocations&&(marker=createLocationMarker()),Identifier===token.type)name=token.value,base=parseIdentifier(),options.scope&&attachScope(base,isLocal=scopeHasName(name));else{if(!consume("("))return null;base=parseExpectedExpression(),expect(")"),options.scope&&(isLocal=base.isLocal)}for(;;)if(Punctuator===token.type)switch(token.value){case"[":pushLocation(marker),next(),expression=parseExpectedExpression(),base=finishNode(ast.indexExpression(base,expression)),expect("]");break;case".":pushLocation(marker),next(),identifier=parseIdentifier(),options.scope&&attachScope(identifier,isLocal),base=finishNode(ast.memberExpression(base,".",identifier));break;case":":pushLocation(marker),next(),identifier=parseIdentifier(),options.scope&&attachScope(identifier,isLocal),base=finishNode(ast.memberExpression(base,":",identifier)),pushLocation(marker),base=parseCallExpression(base);break;case"(":case"{":pushLocation(marker),base=parseCallExpression(base);break;default:return base}else{if(StringLiteral!==token.type)break;pushLocation(marker),base=parseCallExpression(base)}return base}function parseCallExpression(base){if(Punctuator===token.type)switch(token.value){case"(":next();var expressions=[],expression=parseExpression();for(null!=expression&&expressions.push(expression);consume(",");)expression=parseExpectedExpression(),expressions.push(expression);return expect(")"),finishNode(ast.callExpression(base,expressions));case"{":markLocation(),next();var table=parseTableConstructor();return finishNode(ast.tableCallExpression(base,table))}else if(StringLiteral===token.type)return finishNode(ast.stringCallExpression(base,parsePrimaryExpression()));raiseUnexpectedToken("function arguments",token)}function parsePrimaryExpression(){var marker,literals=StringLiteral|NumericLiteral|BooleanLiteral|NilLiteral|VarargLiteral,value=token.value,type=token.type;if(trackLocations&&(marker=createLocationMarker()),type&literals){pushLocation(marker);var raw=input.slice(token.range[0],token.range[1]);return next(),finishNode(ast.literal(type,value,raw))}return Keyword===type&&"function"===value?(pushLocation(marker),next(),parseFunctionDeclaration(null)):consume("{")?(pushLocation(marker),parseTableConstructor()):void 0}function parse(_input,_options){return void 0===_options&&"object"==typeof _input&&(_options=_input,_input=void 0),_options||(_options={}),input=_input||"",options=extend(defaultOptions,_options),index=0,line=1,lineStart=0,length=input.length,scopes=[[]],scopeDepth=0,globals=[],locations=[],options.comments&&(comments=[]),options.wait?exports:end()}function write(_input){return input+=String(_input),length=input.length,exports}function end(_input){void 0!==_input&&write(_input),length=input.length,trackLocations=options.locations||options.ranges,lookahead=lex();var chunk=parseChunk();if(options.comments&&(chunk.comments=comments),options.scope&&(chunk.globals=globals),locations.length>0)throw new Error("Location tracking failed. This is most likely a bug in luaparse");return chunk}Marker.prototype.complete=function(){options.locations&&(this.loc.end.line=previousToken.line,this.loc.end.column=previousToken.range[1]-previousToken.lineStart),options.ranges&&(this.range[1]=previousToken.range[1])},exports.parse=parse,exports.write=write,exports.end=end}(exports)})),ace.define("ace/mode/lua_worker",[],(function(require,exports,module){"use strict";var oop=require("../lib/oop"),Mirror=require("../worker/mirror").Mirror,luaparse=require("../mode/lua/luaparse"),Worker=exports.Worker=function(sender){Mirror.call(this,sender),this.setTimeout(500)};oop.inherits(Worker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{luaparse.parse(value)}catch(e){e instanceof SyntaxError&&errors.push({row:e.line-1,column:e.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(Worker.prototype)}));
\No newline at end of file