worker-lua-c76a8ac3.js.map 174 KB

1
  1. {"version":3,"file":"worker-lua-c76a8ac3.js","sources":["../../node_modules/ace-builds/src-noconflict/worker-lua.js"],"sourcesContent":["\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n return;\nif (window.require && window.define)\n return;\n\nif (!window.console) {\n window.console = function() {\n var msgs = Array.prototype.slice.call(arguments, 0);\n postMessage({type: \"log\", data: msgs});\n };\n window.console.error =\n window.console.warn = \n window.console.log =\n window.console.trace = window.console;\n}\nwindow.window = window;\nwindow.ace = window;\n\nwindow.onerror = function(message, file, line, col, err) {\n postMessage({type: \"error\", data: {\n message: message,\n data: err && err.data,\n file: file,\n line: line, \n col: col,\n stack: err && err.stack\n }});\n};\n\nwindow.normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return window.normalizeModule(parentId, chunks[0]) + \"!\" + window.normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = (base ? base + \"/\" : \"\") + moduleName;\n \n while (moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/^\\.\\//, \"\").replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n \n return moduleName;\n};\n\nwindow.require = function require(parentId, id) {\n if (!id) {\n id = parentId;\n parentId = null;\n }\n if (!id.charAt)\n throw new Error(\"worker.js require() accepts only (parentId, id) as arguments\");\n\n id = window.normalizeModule(parentId, id);\n\n var module = window.require.modules[id];\n if (module) {\n if (!module.initialized) {\n module.initialized = true;\n module.exports = module.factory().exports;\n }\n return module.exports;\n }\n \n if (!window.require.tlns)\n return console.log(\"unable to load \" + id);\n \n var path = resolveModuleId(id, window.require.tlns);\n if (path.slice(-3) != \".js\") path += \".js\";\n \n window.require.id = id;\n window.require.modules[id] = {}; // prevent infinite loop on broken modules\n importScripts(path);\n return window.require(parentId, id);\n};\nfunction resolveModuleId(id, paths) {\n var testPath = id, tail = \"\";\n while (testPath) {\n var alias = paths[testPath];\n if (typeof alias == \"string\") {\n return alias + tail;\n } else if (alias) {\n return alias.location.replace(/\\/*$/, \"/\") + (tail || alias.main || alias.name);\n } else if (alias === false) {\n return \"\";\n }\n var i = testPath.lastIndexOf(\"/\");\n if (i === -1) break;\n tail = testPath.substr(i) + tail;\n testPath = testPath.slice(0, i);\n }\n return id;\n}\nwindow.require.modules = {};\nwindow.require.tlns = {};\n\nwindow.define = function(id, deps, factory) {\n if (arguments.length == 2) {\n factory = deps;\n if (typeof id != \"string\") {\n deps = id;\n id = window.require.id;\n }\n } else if (arguments.length == 1) {\n factory = id;\n deps = [];\n id = window.require.id;\n }\n \n if (typeof factory != \"function\") {\n window.require.modules[id] = {\n exports: factory,\n initialized: true\n };\n return;\n }\n\n if (!deps.length)\n // If there is no dependencies, we inject \"require\", \"exports\" and\n // \"module\" as dependencies, to provide CommonJS compatibility.\n deps = [\"require\", \"exports\", \"module\"];\n\n var req = function(childId) {\n return window.require(id, childId);\n };\n\n window.require.modules[id] = {\n exports: {},\n factory: function() {\n var module = this;\n var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) {\n switch (dep) {\n // Because \"require\", \"exports\" and \"module\" aren't actual\n // dependencies, we must handle them seperately.\n case \"require\": return req;\n case \"exports\": return module.exports;\n case \"module\": return module;\n // But for all other dependencies, we can just go ahead and\n // require them.\n default: return req(dep);\n }\n }));\n if (returnExports)\n module.exports = returnExports;\n return module;\n }\n };\n};\nwindow.define.amd = {};\nwindow.require.tlns = {};\nwindow.initBaseUrls = function initBaseUrls(topLevelNamespaces) {\n for (var i in topLevelNamespaces)\n this.require.tlns[i] = topLevelNamespaces[i];\n};\n\nwindow.initSender = function initSender() {\n\n var EventEmitter = window.require(\"ace/lib/event_emitter\").EventEmitter;\n var oop = window.require(\"ace/lib/oop\");\n \n var Sender = function() {};\n \n (function() {\n \n oop.implement(this, EventEmitter);\n \n this.callback = function(data, callbackId) {\n postMessage({\n type: \"call\",\n id: callbackId,\n data: data\n });\n };\n \n this.emit = function(name, data) {\n postMessage({\n type: \"event\",\n name: name,\n data: data\n });\n };\n \n }).call(Sender.prototype);\n \n return new Sender();\n};\n\nvar main = window.main = null;\nvar sender = window.sender = null;\n\nwindow.onmessage = function(e) {\n var msg = e.data;\n if (msg.event && sender) {\n sender._signal(msg.event, msg.data);\n }\n else if (msg.command) {\n if (main[msg.command])\n main[msg.command].apply(main, msg.args);\n else if (window[msg.command])\n window[msg.command].apply(window, msg.args);\n else\n throw new Error(\"Unknown command:\" + msg.command);\n }\n else if (msg.init) {\n window.initBaseUrls(msg.tlns);\n sender = window.sender = window.initSender();\n var clazz = this.require(msg.module)[msg.classname];\n main = window.main = new clazz(sender);\n }\n};\n})(this);\n\nace.define(\"ace/lib/oop\",[], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/apply_delta\",[], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/range\",[], function(require, exports, module){\"use strict\";\nvar comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = /** @class */ (function () {\n function Range(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n this.end = {\n row: endRow,\n column: endColumn\n };\n }\n Range.prototype.isEqual = function (range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n Range.prototype.toString = function () {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/anchor\",[], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/lib/lang\",[], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&#38;\").replace(/\"/g, \"&#34;\").replace(/'/g, \"&#39;\").replace(/</g, \"&#60;\");\n};\nexports.getMatchOffsets = function (string, regExp) {\n var matches = [];\n string.replace(regExp, function (str) {\n matches.push({\n offset: arguments[arguments.length - 2],\n length: str.length\n });\n });\n return matches;\n};\nexports.deferredCall = function (fcn) {\n var timer = null;\n var callback = function () {\n timer = null;\n fcn();\n };\n var deferred = function (timeout) {\n deferred.cancel();\n timer = setTimeout(callback, timeout || 0);\n return deferred;\n };\n deferred.schedule = deferred;\n deferred.call = function () {\n this.cancel();\n fcn();\n return deferred;\n };\n deferred.cancel = function () {\n clearTimeout(timer);\n timer = null;\n return deferred;\n };\n deferred.isPending = function () {\n return timer;\n };\n return deferred;\n};\nexports.delayedCall = function (fcn, defaultTimeout) {\n var timer = null;\n var callback = function () {\n timer = null;\n fcn();\n };\n var _self = function (timeout) {\n if (timer == null)\n timer = setTimeout(callback, timeout || defaultTimeout);\n };\n _self.delay = function (timeout) {\n timer && clearTimeout(timer);\n timer = setTimeout(callback, timeout || defaultTimeout);\n };\n _self.schedule = _self;\n _self.call = function () {\n this.cancel();\n fcn();\n };\n _self.cancel = function () {\n timer && clearTimeout(timer);\n timer = null;\n };\n _self.isPending = function () {\n return timer;\n };\n return _self;\n};\n\n});\n\nace.define(\"ace/worker/mirror\",[], function(require, exports, module) {\n\"use strict\";\n\nvar Document = require(\"../document\").Document;\nvar lang = require(\"../lib/lang\");\n \nvar Mirror = exports.Mirror = function(sender) {\n this.sender = sender;\n var doc = this.doc = new Document(\"\");\n \n var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this));\n \n var _self = this;\n sender.on(\"change\", function(e) {\n var data = e.data;\n if (data[0].start) {\n doc.applyDeltas(data);\n } else {\n for (var i = 0; i < data.length; i += 2) {\n var d, err; \n if (Array.isArray(data[i+1])) {\n d = {action: \"insert\", start: data[i], lines: data[i+1]};\n } else {\n d = {action: \"remove\", start: data[i], end: data[i+1]};\n }\n \n if ((d.action == \"insert\" ? d.start : d.end).row >= doc.$lines.length) {\n err = new Error(\"Invalid delta\");\n err.data = {\n path: _self.$path,\n linesLength: doc.$lines.length,\n start: d.start,\n end: d.end\n };\n throw err;\n }\n\n doc.applyDelta(d, true);\n }\n }\n if (_self.$timeout)\n return deferredUpdate.schedule(_self.$timeout);\n _self.onUpdate();\n });\n};\n\n(function() {\n \n this.$timeout = 500;\n \n this.setTimeout = function(timeout) {\n this.$timeout = timeout;\n };\n \n this.setValue = function(value) {\n this.doc.setValue(value);\n this.deferredUpdate.schedule(this.$timeout);\n };\n \n this.getValue = function(callbackId) {\n this.sender.callback(this.doc.getValue(), callbackId);\n };\n \n this.onUpdate = function() {\n };\n \n this.isPending = function() {\n return this.deferredUpdate.isPending();\n };\n \n}).call(Mirror.prototype);\n\n});\n\nace.define(\"ace/mode/lua/luaparse\",[], function(require, exports, module) {\n\n(function (root, name, factory) {\n factory(exports)\n}(this, 'luaparse', function (exports) {\n 'use strict';\n\n exports.version = \"0.3.1\";\n\n var input, options, length, features, encodingMode;\n var defaultOptions = exports.defaultOptions = {\n wait: false\n , comments: true\n , scope: false\n , locations: false\n , ranges: false\n , onCreateNode: null\n , onCreateScope: null\n , onDestroyScope: null\n , onLocalDeclaration: null\n , luaVersion: '5.3'\n , encodingMode: 'none'\n };\n\n function encodeUTF8(codepoint, highMask) {\n highMask = highMask || 0;\n\n if (codepoint < 0x80) {\n return String.fromCharCode(codepoint);\n } else if (codepoint < 0x800) {\n return String.fromCharCode(\n highMask | 0xc0 | (codepoint >> 6) ,\n highMask | 0x80 | ( codepoint & 0x3f)\n );\n } else if (codepoint < 0x10000) {\n return String.fromCharCode(\n highMask | 0xe0 | (codepoint >> 12) ,\n highMask | 0x80 | ((codepoint >> 6) & 0x3f),\n highMask | 0x80 | ( codepoint & 0x3f)\n );\n } else /* istanbul ignore else */ if (codepoint < 0x110000) {\n return String.fromCharCode(\n highMask | 0xf0 | (codepoint >> 18) ,\n highMask | 0x80 | ((codepoint >> 12) & 0x3f),\n highMask | 0x80 | ((codepoint >> 6) & 0x3f),\n highMask | 0x80 | ( codepoint & 0x3f)\n );\n } else {\n return null;\n }\n }\n\n function toHex(num, digits) {\n var result = num.toString(16);\n while (result.length < digits)\n result = '0' + result;\n return result;\n }\n\n function checkChars(rx) {\n return function (s) {\n var m = rx.exec(s);\n if (!m)\n return s;\n raise(null, errors.invalidCodeUnit, toHex(m[0].charCodeAt(0), 4).toUpperCase());\n };\n }\n\n var encodingModes = {\n 'pseudo-latin1': {\n fixup: checkChars(/[^\\x00-\\xff]/),\n encodeByte: function (value) {\n if (value === null)\n return '';\n return String.fromCharCode(value);\n },\n encodeUTF8: function (codepoint) {\n return encodeUTF8(codepoint);\n },\n },\n 'x-user-defined': {\n fixup: checkChars(/[^\\x00-\\x7f\\uf780-\\uf7ff]/),\n encodeByte: function (value) {\n if (value === null)\n return '';\n if (value >= 0x80)\n return String.fromCharCode(value | 0xf700);\n return String.fromCharCode(value);\n },\n encodeUTF8: function (codepoint) {\n return encodeUTF8(codepoint, 0xf700);\n }\n },\n 'none': {\n discardStrings: true,\n fixup: function (s) {\n return s;\n },\n encodeByte: function (value) {\n return '';\n },\n encodeUTF8: function (codepoint) {\n return '';\n }\n }\n };\n\n var EOF = 1, StringLiteral = 2, Keyword = 4, Identifier = 8\n , NumericLiteral = 16, Punctuator = 32, BooleanLiteral = 64\n , NilLiteral = 128, VarargLiteral = 256;\n\n exports.tokenTypes = { EOF: EOF, StringLiteral: StringLiteral\n , Keyword: Keyword, Identifier: Identifier, NumericLiteral: NumericLiteral\n , Punctuator: Punctuator, BooleanLiteral: BooleanLiteral\n , NilLiteral: NilLiteral, VarargLiteral: VarargLiteral\n };\n\n var errors = exports.errors = {\n unexpected: 'unexpected %1 \\'%2\\' near \\'%3\\''\n , unexpectedEOF: 'unexpected symbol near \\'<eof>\\''\n , expected: '\\'%1\\' expected near \\'%2\\''\n , expectedToken: '%1 expected near \\'%2\\''\n , unfinishedString: 'unfinished string near \\'%1\\''\n , malformedNumber: 'malformed number near \\'%1\\''\n , decimalEscapeTooLarge: 'decimal escape too large near \\'%1\\''\n , invalidEscape: 'invalid escape sequence near \\'%1\\''\n , hexadecimalDigitExpected: 'hexadecimal digit expected near \\'%1\\''\n , braceExpected: 'missing \\'%1\\' near \\'%2\\''\n , tooLargeCodepoint: 'UTF-8 value too large near \\'%1\\''\n , unfinishedLongString: 'unfinished long string (starting at line %1) near \\'%2\\''\n , unfinishedLongComment: 'unfinished long comment (starting at line %1) near \\'%2\\''\n , ambiguousSyntax: 'ambiguous syntax (function call x new statement) near \\'%1\\''\n , noLoopToBreak: 'no loop to break near \\'%1\\''\n , labelAlreadyDefined: 'label \\'%1\\' already defined on line %2'\n , labelNotVisible: 'no visible label \\'%1\\' for <goto>'\n , gotoJumpInLocalScope: '<goto %1> jumps into the scope of local \\'%2\\''\n , cannotUseVararg: 'cannot use \\'...\\' outside a vararg function near \\'%1\\''\n , invalidCodeUnit: 'code unit U+%1 is not allowed in the current encoding mode'\n };\n\n var ast = exports.ast = {\n labelStatement: function(label) {\n return {\n type: 'LabelStatement'\n , label: label\n };\n }\n\n , breakStatement: function() {\n return {\n type: 'BreakStatement'\n };\n }\n\n , gotoStatement: function(label) {\n return {\n type: 'GotoStatement'\n , label: label\n };\n }\n\n , returnStatement: function(args) {\n return {\n type: 'ReturnStatement'\n , 'arguments': args\n };\n }\n\n , ifStatement: function(clauses) {\n return {\n type: 'IfStatement'\n , clauses: clauses\n };\n }\n , ifClause: function(condition, body) {\n return {\n type: 'IfClause'\n , condition: condition\n , body: body\n };\n }\n , elseifClause: function(condition, body) {\n return {\n type: 'ElseifClause'\n , condition: condition\n , body: body\n };\n }\n , elseClause: function(body) {\n return {\n type: 'ElseClause'\n , body: body\n };\n }\n\n , whileStatement: function(condition, body) {\n return {\n type: 'WhileStatement'\n , condition: condition\n , body: body\n };\n }\n\n , doStatement: function(body) {\n return {\n type: 'DoStatement'\n , body: body\n };\n }\n\n , repeatStatement: function(condition, body) {\n return {\n type: 'RepeatStatement'\n , condition: condition\n , body: body\n };\n }\n\n , localStatement: function(variables, init) {\n return {\n type: 'LocalStatement'\n , variables: variables\n , init: init\n };\n }\n\n , assignmentStatement: function(variables, init) {\n return {\n type: 'AssignmentStatement'\n , variables: variables\n , init: init\n };\n }\n\n , callStatement: function(expression) {\n return {\n type: 'CallStatement'\n , expression: expression\n };\n }\n\n , functionStatement: function(identifier, parameters, isLocal, body) {\n return {\n type: 'FunctionDeclaration'\n , identifier: identifier\n , isLocal: isLocal\n , parameters: parameters\n , body: body\n };\n }\n\n , forNumericStatement: function(variable, start, end, step, body) {\n return {\n type: 'ForNumericStatement'\n , variable: variable\n , start: start\n , end: end\n , step: step\n , body: body\n };\n }\n\n , forGenericStatement: function(variables, iterators, body) {\n return {\n type: 'ForGenericStatement'\n , variables: variables\n , iterators: iterators\n , body: body\n };\n }\n\n , chunk: function(body) {\n return {\n type: 'Chunk'\n , body: body\n };\n }\n\n , identifier: function(name) {\n return {\n type: 'Identifier'\n , name: name\n };\n }\n\n , literal: function(type, value, raw) {\n type = (type === StringLiteral) ? 'StringLiteral'\n : (type === NumericLiteral) ? 'NumericLiteral'\n : (type === BooleanLiteral) ? 'BooleanLiteral'\n : (type === NilLiteral) ? 'NilLiteral'\n : 'VarargLiteral';\n\n return {\n type: type\n , value: value\n , raw: raw\n };\n }\n\n , tableKey: function(key, value) {\n return {\n type: 'TableKey'\n , key: key\n , value: value\n };\n }\n , tableKeyString: function(key, value) {\n return {\n type: 'TableKeyString'\n , key: key\n , value: value\n };\n }\n , tableValue: function(value) {\n return {\n type: 'TableValue'\n , value: value\n };\n }\n\n\n , tableConstructorExpression: function(fields) {\n return {\n type: 'TableConstructorExpression'\n , fields: fields\n };\n }\n , binaryExpression: function(operator, left, right) {\n var type = ('and' === operator || 'or' === operator) ?\n 'LogicalExpression' :\n 'BinaryExpression';\n\n return {\n type: type\n , operator: operator\n , left: left\n , right: right\n };\n }\n , unaryExpression: function(operator, argument) {\n return {\n type: 'UnaryExpression'\n , operator: operator\n , argument: argument\n };\n }\n , memberExpression: function(base, indexer, identifier) {\n return {\n type: 'MemberExpression'\n , indexer: indexer\n , identifier: identifier\n , base: base\n };\n }\n\n , indexExpression: function(base, index) {\n return {\n type: 'IndexExpression'\n , base: base\n , index: index\n };\n }\n\n , callExpression: function(base, args) {\n return {\n type: 'CallExpression'\n , base: base\n , 'arguments': args\n };\n }\n\n , tableCallExpression: function(base, args) {\n return {\n type: 'TableCallExpression'\n , base: base\n , 'arguments': args\n };\n }\n\n , stringCallExpression: function(base, argument) {\n return {\n type: 'StringCallExpression'\n , base: base\n , argument: argument\n };\n }\n\n , comment: function(value, raw) {\n return {\n type: 'Comment'\n , value: value\n , raw: raw\n };\n }\n };\n\n function finishNode(node) {\n if (trackLocations) {\n var location = locations.pop();\n location.complete();\n location.bless(node);\n }\n if (options.onCreateNode) options.onCreateNode(node);\n return node;\n }\n\n var slice = Array.prototype.slice\n , toString = Object.prototype.toString\n ;\n\n var indexOf = /* istanbul ignore next */ function (array, element) {\n for (var i = 0, length = array.length; i < length; ++i) {\n if (array[i] === element) return i;\n }\n return -1;\n };\n if (Array.prototype.indexOf)\n indexOf = function (array, element) {\n return array.indexOf(element);\n };\n\n function indexOfObject(array, property, element) {\n for (var i = 0, length = array.length; i < length; ++i) {\n if (array[i][property] === element) return i;\n }\n return -1;\n }\n\n function sprintf(format) {\n var args = slice.call(arguments, 1);\n format = format.replace(/%(\\d)/g, function (match, index) {\n return '' + args[index - 1] || /* istanbul ignore next */ '';\n });\n return format;\n }\n\n var assign = /* istanbul ignore next */ function (dest) {\n var args = slice.call(arguments, 1)\n , src, prop;\n\n for (var i = 0, length = args.length; i < length; ++i) {\n src = args[i];\n for (prop in src)\n if (Object.prototype.hasOwnProperty.call(src, prop)) {\n dest[prop] = src[prop];\n }\n }\n\n return dest;\n };\n if (Object.assign)\n assign = Object.assign;\n\n exports.SyntaxError = SyntaxError;\n\n function fixupError(e) {\n if (!Object.create)\n return e;\n return Object.create(e, {\n 'line': { 'writable': true, value: e.line },\n 'index': { 'writable': true, value: e.index },\n 'column': { 'writable': true, value: e.column }\n });\n }\n\n function raise(token) {\n var message = sprintf.apply(null, slice.call(arguments, 1))\n , error, col;\n\n if (token === null || typeof token.line === 'undefined') {\n col = index - lineStart + 1;\n error = fixupError(new SyntaxError(sprintf('[%1:%2] %3', line, col, message)));\n error.index = index;\n error.line = line;\n error.column = col;\n } else {\n col = token.range[0] - token.lineStart;\n error = fixupError(new SyntaxError(sprintf('[%1:%2] %3', token.line, col, message)));\n error.line = token.line;\n error.index = token.range[0];\n error.column = col;\n }\n throw error;\n }\n\n function tokenValue(token) {\n var raw = input.slice(token.range[0], token.range[1]);\n if (raw)\n return raw;\n return token.value;\n }\n\n function raiseUnexpectedToken(type, token) {\n raise(token, errors.expectedToken, type, tokenValue(token));\n }\n\n function unexpected(found) {\n var near = tokenValue(lookahead);\n if ('undefined' !== typeof found.type) {\n var type;\n switch (found.type) {\n case StringLiteral: type = 'string'; break;\n case Keyword: type = 'keyword'; break;\n case Identifier: type = 'identifier'; break;\n case NumericLiteral: type = 'number'; break;\n case Punctuator: type = 'symbol'; break;\n case BooleanLiteral: type = 'boolean'; break;\n case NilLiteral:\n return raise(found, errors.unexpected, 'symbol', 'nil', near);\n case EOF:\n return raise(found, errors.unexpectedEOF);\n }\n return raise(found, errors.unexpected, type, tokenValue(found), near);\n }\n return raise(found, errors.unexpected, 'symbol', found, near);\n }\n\n var index\n , token\n , previousToken\n , lookahead\n , comments\n , tokenStart\n , line\n , lineStart;\n\n exports.lex = lex;\n\n function lex() {\n skipWhiteSpace();\n while (45 === input.charCodeAt(index) &&\n 45 === input.charCodeAt(index + 1)) {\n scanComment();\n skipWhiteSpace();\n }\n if (index >= length) return {\n type : EOF\n , value: '<eof>'\n , line: line\n , lineStart: lineStart\n , range: [index, index]\n };\n\n var charCode = input.charCodeAt(index)\n , next = input.charCodeAt(index + 1);\n tokenStart = index;\n if (isIdentifierStart(charCode)) return scanIdentifierOrKeyword();\n\n switch (charCode) {\n case 39: case 34: // '\"\n return scanStringLiteral();\n\n case 48: case 49: case 50: case 51: case 52: case 53:\n case 54: case 55: case 56: case 57: // 0-9\n return scanNumericLiteral();\n\n case 46: // .\n if (isDecDigit(next)) return scanNumericLiteral();\n if (46 === next) {\n if (46 === input.charCodeAt(index + 2)) return scanVarargLiteral();\n return scanPunctuator('..');\n }\n return scanPunctuator('.');\n\n case 61: // =\n if (61 === next) return scanPunctuator('==');\n return scanPunctuator('=');\n\n case 62: // >\n if (features.bitwiseOperators)\n if (62 === next) return scanPunctuator('>>');\n if (61 === next) return scanPunctuator('>=');\n return scanPunctuator('>');\n\n case 60: // <\n if (features.bitwiseOperators)\n if (60 === next) return scanPunctuator('<<');\n if (61 === next) return scanPunctuator('<=');\n return scanPunctuator('<');\n\n case 126: // ~\n if (61 === next) return scanPunctuator('~=');\n if (!features.bitwiseOperators)\n break;\n return scanPunctuator('~');\n\n case 58: // :\n if (features.labels)\n if (58 === next) return scanPunctuator('::');\n return scanPunctuator(':');\n\n case 91: // [\n if (91 === next || 61 === next) return scanLongStringLiteral();\n return scanPunctuator('[');\n\n case 47: // /\n if (features.integerDivision)\n if (47 === next) return scanPunctuator('//');\n return scanPunctuator('/');\n\n case 38: case 124: // & |\n if (!features.bitwiseOperators)\n break;\n case 42: case 94: case 37: case 44: case 123: case 125:\n case 93: case 40: case 41: case 59: case 35: case 45:\n case 43: // * ^ % , { } ] ( ) ; # - +\n return scanPunctuator(input.charAt(index));\n }\n\n return unexpected(input.charAt(index));\n }\n\n function consumeEOL() {\n var charCode = input.charCodeAt(index)\n , peekCharCode = input.charCodeAt(index + 1);\n\n if (isLineTerminator(charCode)) {\n if (10 === charCode && 13 === peekCharCode) ++index;\n if (13 === charCode && 10 === peekCharCode) ++index;\n ++line;\n lineStart = ++index;\n\n return true;\n }\n return false;\n }\n\n function skipWhiteSpace() {\n while (index < length) {\n var charCode = input.charCodeAt(index);\n if (isWhiteSpace(charCode)) {\n ++index;\n } else if (!consumeEOL()) {\n break;\n }\n }\n }\n\n function scanIdentifierOrKeyword() {\n var value, type;\n while (isIdentifierPart(input.charCodeAt(++index)));\n value = encodingMode.fixup(input.slice(tokenStart, index));\n if (isKeyword(value)) {\n type = Keyword;\n } else if ('true' === value || 'false' === value) {\n type = BooleanLiteral;\n value = ('true' === value);\n } else if ('nil' === value) {\n type = NilLiteral;\n value = null;\n } else {\n type = Identifier;\n }\n\n return {\n type: type\n , value: value\n , line: line\n , lineStart: lineStart\n , range: [tokenStart, index]\n };\n }\n\n function scanPunctuator(value) {\n index += value.length;\n return {\n type: Punctuator\n , value: value\n , line: line\n , lineStart: lineStart\n , range: [tokenStart, index]\n };\n }\n\n function scanVarargLiteral() {\n index += 3;\n return {\n type: VarargLiteral\n , value: '...'\n , line: line\n , lineStart: lineStart\n , range: [tokenStart, index]\n };\n }\n\n function scanStringLiteral() {\n var delimiter = input.charCodeAt(index++)\n , beginLine = line\n , beginLineStart = lineStart\n , stringStart = index\n , string = encodingMode.discardStrings ? null : ''\n , charCode;\n\n for (;;) {\n charCode = input.charCodeAt(index++);\n if (delimiter === charCode) break;\n if (index > length || isLineTerminator(charCode)) {\n string += input.slice(stringStart, index - 1);\n raise(null, errors.unfinishedString, input.slice(tokenStart, index - 1));\n }\n if (92 === charCode) { // backslash\n if (!encodingMode.discardStrings) {\n var beforeEscape = input.slice(stringStart, index - 1);\n string += encodingMode.fixup(beforeEscape);\n }\n var escapeValue = readEscapeSequence();\n if (!encodingMode.discardStrings)\n string += escapeValue;\n stringStart = index;\n }\n }\n if (!encodingMode.discardStrings) {\n string += encodingMode.encodeByte(null);\n string += encodingMode.fixup(input.slice(stringStart, index - 1));\n }\n\n return {\n type: StringLiteral\n , value: string\n , line: beginLine\n , lineStart: beginLineStart\n , lastLine: line\n , lastLineStart: lineStart\n , range: [tokenStart, index]\n };\n }\n\n function scanLongStringLiteral() {\n var beginLine = line\n , beginLineStart = lineStart\n , string = readLongString(false);\n if (false === string) raise(token, errors.expected, '[', tokenValue(token));\n\n return {\n type: StringLiteral\n , value: encodingMode.discardStrings ? null : encodingMode.fixup(string)\n , line: beginLine\n , lineStart: beginLineStart\n , lastLine: line\n , lastLineStart: lineStart\n , range: [tokenStart, index]\n };\n }\n\n function scanNumericLiteral() {\n var character = input.charAt(index)\n , next = input.charAt(index + 1);\n\n var literal = ('0' === character && 'xX'.indexOf(next || null) >= 0) ?\n readHexLiteral() : readDecLiteral();\n\n var foundImaginaryUnit = readImaginaryUnitSuffix()\n , foundInt64Suffix = readInt64Suffix();\n\n if (foundInt64Suffix && (foundImaginaryUnit || literal.hasFractionPart)) {\n raise(null, errors.malformedNumber, input.slice(tokenStart, index));\n }\n\n return {\n type: NumericLiteral\n , value: literal.value\n , line: line\n , lineStart: lineStart\n , range: [tokenStart, index]\n };\n }\n\n function readImaginaryUnitSuffix() {\n if (!features.imaginaryNumbers) return;\n if ('iI'.indexOf(input.charAt(index) || null) >= 0) {\n ++index;\n return true;\n } else {\n return false;\n }\n }\n\n function readInt64Suffix() {\n if (!features.integerSuffixes) return;\n\n if ('uU'.indexOf(input.charAt(index) || null) >= 0) {\n ++index;\n if ('lL'.indexOf(input.charAt(index) || null) >= 0) {\n ++index;\n if ('lL'.indexOf(input.charAt(index) || null) >= 0) {\n ++index;\n return 'ULL';\n } else {\n raise(null, errors.malformedNumber, input.slice(tokenStart, index));\n }\n } else {\n raise(null, errors.malformedNumber, input.slice(tokenStart, index));\n }\n } else if ('lL'.indexOf(input.charAt(index) || null) >= 0) {\n ++index;\n if ('lL'.indexOf(input.charAt(index) || null) >= 0) {\n ++index;\n return 'LL';\n } else {\n raise(null, errors.malformedNumber, input.slice(tokenStart, index));\n }\n }\n }\n\n function readHexLiteral() {\n var fraction = 0 // defaults to 0 as it gets summed\n , binaryExponent = 1 // defaults to 1 as it gets multiplied\n , binarySign = 1 // positive\n , digit, fractionStart, exponentStart, digitStart;\n\n digitStart = index += 2; // Skip 0x part\n if (!isHexDigit(input.charCodeAt(index)))\n raise(null, errors.malformedNumber, input.slice(tokenStart, index));\n\n while (isHexDigit(input.charCodeAt(index))) ++index;\n digit = parseInt(input.slice(digitStart, index), 16);\n var foundFraction = false;\n if ('.' === input.charAt(index)) {\n foundFraction = true;\n fractionStart = ++index;\n\n while (isHexDigit(input.charCodeAt(index))) ++index;\n fraction = input.slice(fractionStart, index);\n fraction = (fractionStart === index) ? 0\n : parseInt(fraction, 16) / Math.pow(16, index - fractionStart);\n }\n var foundBinaryExponent = false;\n if ('pP'.indexOf(input.charAt(index) || null) >= 0) {\n foundBinaryExponent = true;\n ++index;\n if ('+-'.indexOf(input.charAt(index) || null) >= 0)\n binarySign = ('+' === input.charAt(index++)) ? 1 : -1;\n\n exponentStart = index;\n if (!isDecDigit(input.charCodeAt(index)))\n raise(null, errors.malformedNumber, input.slice(tokenStart, index));\n\n while (isDecDigit(input.charCodeAt(index))) ++index;\n binaryExponent = input.slice(exponentStart, index);\n binaryExponent = Math.pow(2, binaryExponent * binarySign);\n }\n\n return {\n value: (digit + fraction) * binaryExponent,\n hasFractionPart: foundFraction || foundBinaryExponent\n };\n }\n\n function readDecLiteral() {\n while (isDecDigit(input.charCodeAt(index))) ++index;\n var foundFraction = false;\n if ('.' === input.charAt(index)) {\n foundFraction = true;\n ++index;\n while (isDecDigit(input.charCodeAt(index))) ++index;\n }\n var foundExponent = false;\n if ('eE'.indexOf(input.charAt(index) || null) >= 0) {\n foundExponent = true;\n ++index;\n if ('+-'.indexOf(input.charAt(index) || null) >= 0) ++index;\n if (!isDecDigit(input.charCodeAt(index)))\n raise(null, errors.malformedNumber, input.slice(tokenStart, index));\n\n while (isDecDigit(input.charCodeAt(index))) ++index;\n }\n\n return {\n value: parseFloat(input.slice(tokenStart, index)),\n hasFractionPart: foundFraction || foundExponent\n };\n }\n\n function readUnicodeEscapeSequence() {\n var sequenceStart = index++;\n\n if (input.charAt(index++) !== '{')\n raise(null, errors.braceExpected, '{', '\\\\' + input.slice(sequenceStart, index));\n if (!isHexDigit(input.charCodeAt(index)))\n raise(null, errors.hexadecimalDigitExpected, '\\\\' + input.slice(sequenceStart, index));\n\n while (input.charCodeAt(index) === 0x30) ++index;\n var escStart = index;\n\n while (isHexDigit(input.charCodeAt(index))) {\n ++index;\n if (index - escStart > 6)\n raise(null, errors.tooLargeCodepoint, '\\\\' + input.slice(sequenceStart, index));\n }\n\n var b = input.charAt(index++);\n if (b !== '}') {\n if ((b === '\"') || (b === \"'\"))\n raise(null, errors.braceExpected, '}', '\\\\' + input.slice(sequenceStart, index--));\n else\n raise(null, errors.hexadecimalDigitExpected, '\\\\' + input.slice(sequenceStart, index));\n }\n\n var codepoint = parseInt(input.slice(escStart, index - 1) || '0', 16);\n var frag = '\\\\' + input.slice(sequenceStart, index);\n\n if (codepoint > 0x10ffff) {\n raise(null, errors.tooLargeCodepoint, frag);\n }\n\n return encodingMode.encodeUTF8(codepoint, frag);\n }\n function readEscapeSequence() {\n var sequenceStart = index;\n switch (input.charAt(index)) {\n case 'a': ++index; return '\\x07';\n case 'n': ++index; return '\\n';\n case 'r': ++index; return '\\r';\n case 't': ++index; return '\\t';\n case 'v': ++index; return '\\x0b';\n case 'b': ++index; return '\\b';\n case 'f': ++index; return '\\f';\n case '\\r':\n case '\\n':\n consumeEOL();\n return '\\n';\n\n case '0': case '1': case '2': case '3': case '4':\n case '5': case '6': case '7': case '8': case '9':\n while (isDecDigit(input.charCodeAt(index)) && index - sequenceStart < 3) ++index;\n\n var frag = input.slice(sequenceStart, index);\n var ddd = parseInt(frag, 10);\n if (ddd > 255) {\n raise(null, errors.decimalEscapeTooLarge, '\\\\' + ddd);\n }\n return encodingMode.encodeByte(ddd, '\\\\' + frag);\n\n case 'z':\n if (features.skipWhitespaceEscape) {\n ++index;\n skipWhiteSpace();\n return '';\n }\n break;\n\n case 'x':\n if (features.hexEscapes) {\n if (isHexDigit(input.charCodeAt(index + 1)) &&\n isHexDigit(input.charCodeAt(index + 2))) {\n index += 3;\n return encodingMode.encodeByte(parseInt(input.slice(sequenceStart + 1, index), 16), '\\\\' + input.slice(sequenceStart, index));\n }\n raise(null, errors.hexadecimalDigitExpected, '\\\\' + input.slice(sequenceStart, index + 2));\n }\n break;\n\n case 'u':\n if (features.unicodeEscapes)\n return readUnicodeEscapeSequence();\n break;\n\n case '\\\\': case '\"': case \"'\":\n return input.charAt(index++);\n }\n\n if (features.strictEscapes)\n raise(null, errors.invalidEscape, '\\\\' + input.slice(sequenceStart, index + 1));\n return input.charAt(index++);\n }\n\n function scanComment() {\n tokenStart = index;\n index += 2; // --\n\n var character = input.charAt(index)\n , content = ''\n , isLong = false\n , commentStart = index\n , lineStartComment = lineStart\n , lineComment = line;\n\n if ('[' === character) {\n content = readLongString(true);\n if (false === content) content = character;\n else isLong = true;\n }\n if (!isLong) {\n while (index < length) {\n if (isLineTerminator(input.charCodeAt(index))) break;\n ++index;\n }\n if (options.comments) content = input.slice(commentStart, index);\n }\n\n if (options.comments) {\n var node = ast.comment(content, input.slice(tokenStart, index));\n if (options.locations) {\n node.loc = {\n start: { line: lineComment, column: tokenStart - lineStartComment }\n , end: { line: line, column: index - lineStart }\n };\n }\n if (options.ranges) {\n node.range = [tokenStart, index];\n }\n if (options.onCreateNode) options.onCreateNode(node);\n comments.push(node);\n }\n }\n\n function readLongString(isComment) {\n var level = 0\n , content = ''\n , terminator = false\n , character, stringStart, firstLine = line;\n\n ++index; // [\n while ('=' === input.charAt(index + level)) ++level;\n if ('[' !== input.charAt(index + level)) return false;\n\n index += level + 1;\n if (isLineTerminator(input.charCodeAt(index))) consumeEOL();\n\n stringStart = index;\n while (index < length) {\n while (isLineTerminator(input.charCodeAt(index))) consumeEOL();\n\n character = input.charAt(index++);\n if (']' === character) {\n terminator = true;\n for (var i = 0; i < level; ++i) {\n if ('=' !== input.charAt(index + i)) terminator = false;\n }\n if (']' !== input.charAt(index + level)) terminator = false;\n }\n if (terminator) {\n content += input.slice(stringStart, index - 1);\n index += level + 1;\n return content;\n }\n }\n\n raise(null, isComment ?\n errors.unfinishedLongComment :\n errors.unfinishedLongString,\n firstLine, '<eof>');\n }\n\n function next() {\n previousToken = token;\n token = lookahead;\n lookahead = lex();\n }\n\n function consume(value) {\n if (value === token.value) {\n next();\n return true;\n }\n return false;\n }\n\n function expect(value) {\n if (value === token.value) next();\n else raise(token, errors.expected, value, tokenValue(token));\n }\n\n function isWhiteSpace(charCode) {\n return 9 === charCode || 32 === charCode || 0xB === charCode || 0xC === charCode;\n }\n\n function isLineTerminator(charCode) {\n return 10 === charCode || 13 === charCode;\n }\n\n function isDecDigit(charCode) {\n return charCode >= 48 && charCode <= 57;\n }\n\n function isHexDigit(charCode) {\n return (charCode >= 48 && charCode <= 57) || (charCode >= 97 && charCode <= 102) || (charCode >= 65 && charCode <= 70);\n }\n\n function isIdentifierStart(charCode) {\n if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode)\n return true;\n if (features.extendedIdentifiers && charCode >= 128)\n return true;\n return false;\n }\n\n function isIdentifierPart(charCode) {\n if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode || (charCode >= 48 && charCode <= 57))\n return true;\n if (features.extendedIdentifiers && charCode >= 128)\n return true;\n return false;\n }\n\n function isKeyword(id) {\n switch (id.length) {\n case 2:\n return 'do' === id || 'if' === id || 'in' === id || 'or' === id;\n case 3:\n return 'and' === id || 'end' === id || 'for' === id || 'not' === id;\n case 4:\n if ('else' === id || 'then' === id)\n return true;\n if (features.labels && !features.contextualGoto)\n return ('goto' === id);\n return false;\n case 5:\n return 'break' === id || 'local' === id || 'until' === id || 'while' === id;\n case 6:\n return 'elseif' === id || 'repeat' === id || 'return' === id;\n case 8:\n return 'function' === id;\n }\n return false;\n }\n\n function isUnary(token) {\n if (Punctuator === token.type) return '#-~'.indexOf(token.value) >= 0;\n if (Keyword === token.type) return 'not' === token.value;\n return false;\n }\n\n function isBlockFollow(token) {\n if (EOF === token.type) return true;\n if (Keyword !== token.type) return false;\n switch (token.value) {\n case 'else': case 'elseif':\n case 'end': case 'until':\n return true;\n default:\n return false;\n }\n }\n var scopes\n , scopeDepth\n , globals;\n function createScope() {\n var scope = scopes[scopeDepth++].slice();\n scopes.push(scope);\n if (options.onCreateScope) options.onCreateScope();\n }\n function destroyScope() {\n var scope = scopes.pop();\n --scopeDepth;\n if (options.onDestroyScope) options.onDestroyScope();\n }\n function scopeIdentifierName(name) {\n if (options.onLocalDeclaration) options.onLocalDeclaration(name);\n if (-1 !== indexOf(scopes[scopeDepth], name)) return;\n scopes[scopeDepth].push(name);\n }\n function scopeIdentifier(node) {\n scopeIdentifierName(node.name);\n attachScope(node, true);\n }\n function attachScope(node, isLocal) {\n if (!isLocal && -1 === indexOfObject(globals, 'name', node.name))\n globals.push(node);\n\n node.isLocal = isLocal;\n }\n function scopeHasName(name) {\n return (-1 !== indexOf(scopes[scopeDepth], name));\n }\n\n var locations = []\n , trackLocations;\n\n function createLocationMarker() {\n return new Marker(token);\n }\n\n function Marker(token) {\n if (options.locations) {\n this.loc = {\n start: {\n line: token.line\n , column: token.range[0] - token.lineStart\n }\n , end: {\n line: 0\n , column: 0\n }\n };\n }\n if (options.ranges) this.range = [token.range[0], 0];\n }\n Marker.prototype.complete = function() {\n if (options.locations) {\n this.loc.end.line = previousToken.lastLine || previousToken.line;\n this.loc.end.column = previousToken.range[1] - (previousToken.lastLineStart || previousToken.lineStart);\n }\n if (options.ranges) {\n this.range[1] = previousToken.range[1];\n }\n };\n\n Marker.prototype.bless = function (node) {\n if (this.loc) {\n var loc = this.loc;\n node.loc = {\n start: {\n line: loc.start.line,\n column: loc.start.column\n },\n end: {\n line: loc.end.line,\n column: loc.end.column\n }\n };\n }\n if (this.range) {\n node.range = [\n this.range[0],\n this.range[1]\n ];\n }\n };\n function markLocation() {\n if (trackLocations) locations.push(createLocationMarker());\n }\n function pushLocation(marker) {\n if (trackLocations) locations.push(marker);\n }\n\n function FullFlowContext() {\n this.scopes = [];\n this.pendingGotos = [];\n }\n\n FullFlowContext.prototype.isInLoop = function () {\n var i = this.scopes.length;\n while (i --> 0) {\n if (this.scopes[i].isLoop)\n return true;\n }\n return false;\n };\n\n FullFlowContext.prototype.pushScope = function (isLoop) {\n var scope = {\n labels: {},\n locals: [],\n deferredGotos: [],\n isLoop: !!isLoop\n };\n this.scopes.push(scope);\n };\n\n FullFlowContext.prototype.popScope = function () {\n for (var i = 0; i < this.pendingGotos.length; ++i) {\n var theGoto = this.pendingGotos[i];\n if (theGoto.maxDepth >= this.scopes.length)\n if (--theGoto.maxDepth <= 0)\n raise(theGoto.token, errors.labelNotVisible, theGoto.target);\n }\n\n this.scopes.pop();\n };\n\n FullFlowContext.prototype.addGoto = function (target, token) {\n var localCounts = [];\n\n for (var i = 0; i < this.scopes.length; ++i) {\n var scope = this.scopes[i];\n localCounts.push(scope.locals.length);\n if (Object.prototype.hasOwnProperty.call(scope.labels, target))\n return;\n }\n\n this.pendingGotos.push({\n maxDepth: this.scopes.length,\n target: target,\n token: token,\n localCounts: localCounts\n });\n };\n\n FullFlowContext.prototype.addLabel = function (name, token) {\n var scope = this.currentScope();\n\n if (Object.prototype.hasOwnProperty.call(scope.labels, name)) {\n raise(token, errors.labelAlreadyDefined, name, scope.labels[name].line);\n } else {\n var newGotos = [];\n\n for (var i = 0; i < this.pendingGotos.length; ++i) {\n var theGoto = this.pendingGotos[i];\n\n if (theGoto.maxDepth >= this.scopes.length && theGoto.target === name) {\n if (theGoto.localCounts[this.scopes.length - 1] < scope.locals.length) {\n scope.deferredGotos.push(theGoto);\n }\n continue;\n }\n\n newGotos.push(theGoto);\n }\n\n this.pendingGotos = newGotos;\n }\n\n scope.labels[name] = {\n localCount: scope.locals.length,\n line: token.line\n };\n };\n\n FullFlowContext.prototype.addLocal = function (name, token) {\n this.currentScope().locals.push({\n name: name,\n token: token\n });\n };\n\n FullFlowContext.prototype.currentScope = function () {\n return this.scopes[this.scopes.length - 1];\n };\n\n FullFlowContext.prototype.raiseDeferredErrors = function () {\n var scope = this.currentScope();\n var bads = scope.deferredGotos;\n for (var i = 0; i < bads.length; ++i) {\n var theGoto = bads[i];\n raise(theGoto.token, errors.gotoJumpInLocalScope, theGoto.target, scope.locals[theGoto.localCounts[this.scopes.length - 1]].name);\n }\n };\n\n function LoopFlowContext() {\n this.level = 0;\n this.loopLevels = [];\n }\n\n LoopFlowContext.prototype.isInLoop = function () {\n return !!this.loopLevels.length;\n };\n\n LoopFlowContext.prototype.pushScope = function (isLoop) {\n ++this.level;\n if (isLoop)\n this.loopLevels.push(this.level);\n };\n\n LoopFlowContext.prototype.popScope = function () {\n var levels = this.loopLevels;\n var levlen = levels.length;\n if (levlen) {\n if (levels[levlen - 1] === this.level)\n levels.pop();\n }\n --this.level;\n };\n\n LoopFlowContext.prototype.addGoto =\n LoopFlowContext.prototype.addLabel =\n function () { throw new Error('This should never happen'); };\n\n LoopFlowContext.prototype.addLocal =\n LoopFlowContext.prototype.raiseDeferredErrors =\n function () {};\n\n function makeFlowContext() {\n return features.labels ? new FullFlowContext() : new LoopFlowContext();\n }\n\n function parseChunk() {\n next();\n markLocation();\n if (options.scope) createScope();\n var flowContext = makeFlowContext();\n flowContext.allowVararg = true;\n flowContext.pushScope();\n var body = parseBlock(flowContext);\n flowContext.popScope();\n if (options.scope) destroyScope();\n if (EOF !== token.type) unexpected(token);\n if (trackLocations && !body.length) previousToken = token;\n return finishNode(ast.chunk(body));\n }\n\n function parseBlock(flowContext) {\n var block = []\n , statement;\n\n while (!isBlockFollow(token)) {\n if ('return' === token.value || (!features.relaxedBreak && 'break' === token.value)) {\n block.push(parseStatement(flowContext));\n break;\n }\n statement = parseStatement(flowContext);\n consume(';');\n if (statement) block.push(statement);\n }\n return block;\n }\n\n function parseStatement(flowContext) {\n markLocation();\n\n if (Punctuator === token.type) {\n if (consume('::')) return parseLabelStatement(flowContext);\n }\n if (features.emptyStatement) {\n if (consume(';')) {\n if (trackLocations) locations.pop();\n return;\n }\n }\n\n flowContext.raiseDeferredErrors();\n\n if (Keyword === token.type) {\n switch (token.value) {\n case 'local': next(); return parseLocalStatement(flowContext);\n case 'if': next(); return parseIfStatement(flowContext);\n case 'return': next(); return parseReturnStatement(flowContext);\n case 'function': next();\n var name = parseFunctionName();\n return parseFunctionDeclaration(name);\n case 'while': next(); return parseWhileStatement(flowContext);\n case 'for': next(); return parseForStatement(flowContext);\n case 'repeat': next(); return parseRepeatStatement(flowContext);\n case 'break': next();\n if (!flowContext.isInLoop())\n raise(token, errors.noLoopToBreak, token.value);\n return parseBreakStatement();\n case 'do': next(); return parseDoStatement(flowContext);\n case 'goto': next(); return parseGotoStatement(flowContext);\n }\n }\n\n if (features.contextualGoto &&\n token.type === Identifier && token.value === 'goto' &&\n lookahead.type === Identifier && lookahead.value !== 'goto') {\n next(); return parseGotoStatement(flowContext);\n }\n if (trackLocations) locations.pop();\n\n return parseAssignmentOrCallStatement(flowContext);\n }\n\n function parseLabelStatement(flowContext) {\n var nameToken = token\n , label = parseIdentifier();\n\n if (options.scope) {\n scopeIdentifierName('::' + nameToken.value + '::');\n attachScope(label, true);\n }\n\n expect('::');\n\n flowContext.addLabel(nameToken.value, nameToken);\n return finishNode(ast.labelStatement(label));\n }\n\n function parseBreakStatement() {\n return finishNode(ast.breakStatement());\n }\n\n function parseGotoStatement(flowContext) {\n var name = token.value\n , gotoToken = previousToken\n , label = parseIdentifier();\n\n flowContext.addGoto(name, gotoToken);\n return finishNode(ast.gotoStatement(label));\n }\n\n function parseDoStatement(flowContext) {\n if (options.scope) createScope();\n flowContext.pushScope();\n var body = parseBlock(flowContext);\n flowContext.popScope();\n if (options.scope) destroyScope();\n expect('end');\n return finishNode(ast.doStatement(body));\n }\n\n function parseWhileStatement(flowContext) {\n var condition = parseExpectedExpression(flowContext);\n expect('do');\n if (options.scope) createScope();\n flowContext.pushScope(true);\n var body = parseBlock(flowContext);\n flowContext.popScope();\n if (options.scope) destroyScope();\n expect('end');\n return finishNode(ast.whileStatement(condition, body));\n }\n\n function parseRepeatStatement(flowContext) {\n if (options.scope) createScope();\n flowContext.pushScope(true);\n var body = parseBlock(flowContext);\n expect('until');\n flowContext.raiseDeferredErrors();\n var condition = parseExpectedExpression(flowContext);\n flowContext.popScope();\n if (options.scope) destroyScope();\n return finishNode(ast.repeatStatement(condition, body));\n }\n\n function parseReturnStatement(flowContext) {\n var expressions = [];\n\n if ('end' !== token.value) {\n var expression = parseExpression(flowContext);\n if (null != expression) expressions.push(expression);\n while (consume(',')) {\n expression = parseExpectedExpression(flowContext);\n expressions.push(expression);\n }\n consume(';'); // grammar tells us ; is optional here.\n }\n return finishNode(ast.returnStatement(expressions));\n }\n\n function parseIfStatement(flowContext) {\n var clauses = []\n , condition\n , body\n , marker;\n if (trackLocations) {\n marker = locations[locations.length - 1];\n locations.push(marker);\n }\n condition = parseExpectedExpression(flowContext);\n expect('then');\n if (options.scope) createScope();\n flowContext.pushScope();\n body = parseBlock(flowContext);\n flowContext.popScope();\n if (options.scope) destroyScope();\n clauses.push(finishNode(ast.ifClause(condition, body)));\n\n if (trackLocations) marker = createLocationMarker();\n while (consume('elseif')) {\n pushLocation(marker);\n condition = parseExpectedExpression(flowContext);\n expect('then');\n if (options.scope) createScope();\n flowContext.pushScope();\n body = parseBlock(flowContext);\n flowContext.popScope();\n if (options.scope) destroyScope();\n clauses.push(finishNode(ast.elseifClause(condition, body)));\n if (trackLocations) marker = createLocationMarker();\n }\n\n if (consume('else')) {\n if (trackLocations) {\n marker = new Marker(previousToken);\n locations.push(marker);\n }\n if (options.scope) createScope();\n flowContext.pushScope();\n body = parseBlock(flowContext);\n flowContext.popScope();\n if (options.scope) destroyScope();\n clauses.push(finishNode(ast.elseClause(body)));\n }\n\n expect('end');\n return finishNode(ast.ifStatement(clauses));\n }\n\n function parseForStatement(flowContext) {\n var variable = parseIdentifier()\n , body;\n\n if (options.scope) {\n createScope();\n scopeIdentifier(variable);\n }\n if (consume('=')) {\n var start = parseExpectedExpression(flowContext);\n expect(',');\n var end = parseExpectedExpression(flowContext);\n var step = consume(',') ? parseExpectedExpression(flowContext) : null;\n\n expect('do');\n flowContext.pushScope(true);\n body = parseBlock(flowContext);\n flowContext.popScope();\n expect('end');\n if (options.scope) destroyScope();\n\n return finishNode(ast.forNumericStatement(variable, start, end, step, body));\n }\n else {\n var variables = [variable];\n while (consume(',')) {\n variable = parseIdentifier();\n if (options.scope) scopeIdentifier(variable);\n variables.push(variable);\n }\n expect('in');\n var iterators = [];\n do {\n var expression = parseExpectedExpression(flowContext);\n iterators.push(expression);\n } while (consume(','));\n\n expect('do');\n flowContext.pushScope(true);\n body = parseBlock(flowContext);\n flowContext.popScope();\n expect('end');\n if (options.scope) destroyScope();\n\n return finishNode(ast.forGenericStatement(variables, iterators, body));\n }\n }\n\n function parseLocalStatement(flowContext) {\n var name\n , declToken = previousToken;\n\n if (Identifier === token.type) {\n var variables = []\n , init = [];\n\n do {\n name = parseIdentifier();\n\n variables.push(name);\n flowContext.addLocal(name.name, declToken);\n } while (consume(','));\n\n if (consume('=')) {\n do {\n var expression = parseExpectedExpression(flowContext);\n init.push(expression);\n } while (consume(','));\n }\n if (options.scope) {\n for (var i = 0, l = variables.length; i < l; ++i) {\n scopeIdentifier(variables[i]);\n }\n }\n\n return finishNode(ast.localStatement(variables, init));\n }\n if (consume('function')) {\n name = parseIdentifier();\n flowContext.addLocal(name.name, declToken);\n\n if (options.scope) {\n scopeIdentifier(name);\n createScope();\n }\n return parseFunctionDeclaration(name, true);\n } else {\n raiseUnexpectedToken('<name>', token);\n }\n }\n\n function parseAssignmentOrCallStatement(flowContext) {\n var previous = token\n , marker, startMarker;\n var lvalue, base, name;\n\n var targets = [];\n\n if (trackLocations) startMarker = createLocationMarker();\n\n do {\n if (trackLocations) marker = createLocationMarker();\n\n if (Identifier === token.type) {\n name = token.value;\n base = parseIdentifier();\n if (options.scope) attachScope(base, scopeHasName(name));\n lvalue = true;\n } else if ('(' === token.value) {\n next();\n base = parseExpectedExpression(flowContext);\n expect(')');\n lvalue = false;\n } else {\n return unexpected(token);\n }\n\n both: for (;;) {\n var newBase;\n\n switch (StringLiteral === token.type ? '\"' : token.value) {\n case '.':\n case '[':\n lvalue = true;\n break;\n case ':':\n case '(':\n case '{':\n case '\"':\n lvalue = null;\n break;\n default:\n break both;\n }\n\n base = parsePrefixExpressionPart(base, marker, flowContext);\n }\n\n targets.push(base);\n\n if (',' !== token.value)\n break;\n\n if (!lvalue) {\n return unexpected(token);\n }\n\n next();\n } while (true);\n\n if (targets.length === 1 && lvalue === null) {\n pushLocation(marker);\n return finishNode(ast.callStatement(targets[0]));\n } else if (!lvalue) {\n return unexpected(token);\n }\n\n expect('=');\n\n var values = [];\n\n do {\n values.push(parseExpectedExpression(flowContext));\n } while (consume(','));\n\n pushLocation(startMarker);\n return finishNode(ast.assignmentStatement(targets, values));\n }\n\n function parseIdentifier() {\n markLocation();\n var identifier = token.value;\n if (Identifier !== token.type) raiseUnexpectedToken('<name>', token);\n next();\n return finishNode(ast.identifier(identifier));\n }\n\n function parseFunctionDeclaration(name, isLocal) {\n var flowContext = makeFlowContext();\n flowContext.pushScope();\n\n var parameters = [];\n expect('(');\n if (!consume(')')) {\n while (true) {\n if (Identifier === token.type) {\n var parameter = parseIdentifier();\n if (options.scope) scopeIdentifier(parameter);\n\n parameters.push(parameter);\n\n if (consume(',')) continue;\n }\n else if (VarargLiteral === token.type) {\n flowContext.allowVararg = true;\n parameters.push(parsePrimaryExpression(flowContext));\n } else {\n raiseUnexpectedToken('<name> or \\'...\\'', token);\n }\n expect(')');\n break;\n }\n }\n\n var body = parseBlock(flowContext);\n flowContext.popScope();\n expect('end');\n if (options.scope) destroyScope();\n\n isLocal = isLocal || false;\n return finishNode(ast.functionStatement(name, parameters, isLocal, body));\n }\n\n function parseFunctionName() {\n var base, name, marker;\n\n if (trackLocations) marker = createLocationMarker();\n base = parseIdentifier();\n\n if (options.scope) {\n attachScope(base, scopeHasName(base.name));\n createScope();\n }\n\n while (consume('.')) {\n pushLocation(marker);\n name = parseIdentifier();\n base = finishNode(ast.memberExpression(base, '.', name));\n }\n\n if (consume(':')) {\n pushLocation(marker);\n name = parseIdentifier();\n base = finishNode(ast.memberExpression(base, ':', name));\n if (options.scope) scopeIdentifierName('self');\n }\n\n return base;\n }\n\n function parseTableConstructor(flowContext) {\n var fields = []\n , key, value;\n\n while (true) {\n markLocation();\n if (Punctuator === token.type && consume('[')) {\n key = parseExpectedExpression(flowContext);\n expect(']');\n expect('=');\n value = parseExpectedExpression(flowContext);\n fields.push(finishNode(ast.tableKey(key, value)));\n } else if (Identifier === token.type) {\n if ('=' === lookahead.value) {\n key = parseIdentifier();\n next();\n value = parseExpectedExpression(flowContext);\n fields.push(finishNode(ast.tableKeyString(key, value)));\n } else {\n value = parseExpectedExpression(flowContext);\n fields.push(finishNode(ast.tableValue(value)));\n }\n } else {\n if (null == (value = parseExpression(flowContext))) {\n locations.pop();\n break;\n }\n fields.push(finishNode(ast.tableValue(value)));\n }\n if (',;'.indexOf(token.value) >= 0) {\n next();\n continue;\n }\n break;\n }\n expect('}');\n return finishNode(ast.tableConstructorExpression(fields));\n }\n\n function parseExpression(flowContext) {\n var expression = parseSubExpression(0, flowContext);\n return expression;\n }\n\n function parseExpectedExpression(flowContext) {\n var expression = parseExpression(flowContext);\n if (null == expression) raiseUnexpectedToken('<expression>', token);\n else return expression;\n }\n\n function binaryPrecedence(operator) {\n var charCode = operator.charCodeAt(0)\n , length = operator.length;\n\n if (1 === length) {\n switch (charCode) {\n case 94: return 12; // ^\n case 42: case 47: case 37: return 10; // * / %\n case 43: case 45: return 9; // + -\n case 38: return 6; // &\n case 126: return 5; // ~\n case 124: return 4; // |\n case 60: case 62: return 3; // < >\n }\n } else if (2 === length) {\n switch (charCode) {\n case 47: return 10; // //\n case 46: return 8; // ..\n case 60: case 62:\n if('<<' === operator || '>>' === operator) return 7; // << >>\n return 3; // <= >=\n case 61: case 126: return 3; // == ~=\n case 111: return 1; // or\n }\n } else if (97 === charCode && 'and' === operator) return 2;\n return 0;\n }\n\n function parseSubExpression(minPrecedence, flowContext) {\n var operator = token.value\n , expression, marker;\n\n if (trackLocations) marker = createLocationMarker();\n if (isUnary(token)) {\n markLocation();\n next();\n var argument = parseSubExpression(10, flowContext);\n if (argument == null) raiseUnexpectedToken('<expression>', token);\n expression = finishNode(ast.unaryExpression(operator, argument));\n }\n if (null == expression) {\n expression = parsePrimaryExpression(flowContext);\n if (null == expression) {\n expression = parsePrefixExpression(flowContext);\n }\n }\n if (null == expression) return null;\n\n var precedence;\n while (true) {\n operator = token.value;\n\n precedence = (Punctuator === token.type || Keyword === token.type) ?\n binaryPrecedence(operator) : 0;\n\n if (precedence === 0 || precedence <= minPrecedence) break;\n if ('^' === operator || '..' === operator) --precedence;\n next();\n var right = parseSubExpression(precedence, flowContext);\n if (null == right) raiseUnexpectedToken('<expression>', token);\n if (trackLocations) locations.push(marker);\n expression = finishNode(ast.binaryExpression(operator, expression, right));\n\n }\n return expression;\n }\n\n function parsePrefixExpressionPart(base, marker, flowContext) {\n var expression, identifier;\n\n if (Punctuator === token.type) {\n switch (token.value) {\n case '[':\n pushLocation(marker);\n next();\n expression = parseExpectedExpression(flowContext);\n expect(']');\n return finishNode(ast.indexExpression(base, expression));\n case '.':\n pushLocation(marker);\n next();\n identifier = parseIdentifier();\n return finishNode(ast.memberExpression(base, '.', identifier));\n case ':':\n pushLocation(marker);\n next();\n identifier = parseIdentifier();\n base = finishNode(ast.memberExpression(base, ':', identifier));\n pushLocation(marker);\n return parseCallExpression(base, flowContext);\n case '(': case '{': // args\n pushLocation(marker);\n return parseCallExpression(base, flowContext);\n }\n } else if (StringLiteral === token.type) {\n pushLocation(marker);\n return parseCallExpression(base, flowContext);\n }\n\n return null;\n }\n\n function parsePrefixExpression(flowContext) {\n var base, name, marker;\n\n if (trackLocations) marker = createLocationMarker();\n if (Identifier === token.type) {\n name = token.value;\n base = parseIdentifier();\n if (options.scope) attachScope(base, scopeHasName(name));\n } else if (consume('(')) {\n base = parseExpectedExpression(flowContext);\n expect(')');\n } else {\n return null;\n }\n for (;;) {\n var newBase = parsePrefixExpressionPart(base, marker, flowContext);\n if (newBase === null)\n break;\n base = newBase;\n }\n\n return base;\n }\n\n function parseCallExpression(base, flowContext) {\n if (Punctuator === token.type) {\n switch (token.value) {\n case '(':\n if (!features.emptyStatement) {\n if (token.line !== previousToken.line)\n raise(null, errors.ambiguousSyntax, token.value);\n }\n next();\n var expressions = [];\n var expression = parseExpression(flowContext);\n if (null != expression) expressions.push(expression);\n while (consume(',')) {\n expression = parseExpectedExpression(flowContext);\n expressions.push(expression);\n }\n\n expect(')');\n return finishNode(ast.callExpression(base, expressions));\n\n case '{':\n markLocation();\n next();\n var table = parseTableConstructor(flowContext);\n return finishNode(ast.tableCallExpression(base, table));\n }\n } else if (StringLiteral === token.type) {\n return finishNode(ast.stringCallExpression(base, parsePrimaryExpression(flowContext)));\n }\n\n raiseUnexpectedToken('function arguments', token);\n }\n\n function parsePrimaryExpression(flowContext) {\n var literals = StringLiteral | NumericLiteral | BooleanLiteral | NilLiteral | VarargLiteral\n , value = token.value\n , type = token.type\n , marker;\n\n if (trackLocations) marker = createLocationMarker();\n\n if (type === VarargLiteral && !flowContext.allowVararg) {\n raise(token, errors.cannotUseVararg, token.value);\n }\n\n if (type & literals) {\n pushLocation(marker);\n var raw = input.slice(token.range[0], token.range[1]);\n next();\n return finishNode(ast.literal(type, value, raw));\n } else if (Keyword === type && 'function' === value) {\n pushLocation(marker);\n next();\n if (options.scope) createScope();\n return parseFunctionDeclaration(null);\n } else if (consume('{')) {\n pushLocation(marker);\n return parseTableConstructor(flowContext);\n }\n }\n\n exports.parse = parse;\n\n var versionFeatures = {\n '5.1': {\n },\n '5.2': {\n labels: true,\n emptyStatement: true,\n hexEscapes: true,\n skipWhitespaceEscape: true,\n strictEscapes: true,\n relaxedBreak: true\n },\n '5.3': {\n labels: true,\n emptyStatement: true,\n hexEscapes: true,\n skipWhitespaceEscape: true,\n strictEscapes: true,\n unicodeEscapes: true,\n bitwiseOperators: true,\n integerDivision: true,\n relaxedBreak: true\n },\n 'LuaJIT': {\n labels: true,\n contextualGoto: true,\n hexEscapes: true,\n skipWhitespaceEscape: true,\n strictEscapes: true,\n unicodeEscapes: true,\n imaginaryNumbers: true,\n integerSuffixes: true\n }\n };\n\n function parse(_input, _options) {\n if ('undefined' === typeof _options && 'object' === typeof _input) {\n _options = _input;\n _input = undefined;\n }\n if (!_options) _options = {};\n\n input = _input || '';\n options = assign({}, defaultOptions, _options);\n index = 0;\n line = 1;\n lineStart = 0;\n length = input.length;\n scopes = [[]];\n scopeDepth = 0;\n globals = [];\n locations = [];\n\n if (!Object.prototype.hasOwnProperty.call(versionFeatures, options.luaVersion)) {\n throw new Error(sprintf(\"Lua version '%1' not supported\", options.luaVersion));\n }\n\n features = assign({}, versionFeatures[options.luaVersion]);\n if (options.extendedIdentifiers !== void 0)\n features.extendedIdentifiers = !!options.extendedIdentifiers;\n\n if (!Object.prototype.hasOwnProperty.call(encodingModes, options.encodingMode)) {\n throw new Error(sprintf(\"Encoding mode '%1' not supported\", options.encodingMode));\n }\n\n encodingMode = encodingModes[options.encodingMode];\n\n if (options.comments) comments = [];\n if (!options.wait) return end();\n return exports;\n }\n exports.write = write;\n\n function write(_input) {\n input += String(_input);\n length = input.length;\n return exports;\n }\n exports.end = end;\n\n function end(_input) {\n if ('undefined' !== typeof _input) write(_input);\n if (input && input.substr(0, 2) === '#!') input = input.replace(/^.*/, function (line) {\n return line.replace(/./g, ' ');\n });\n\n length = input.length;\n trackLocations = options.locations || options.ranges;\n lookahead = lex();\n\n var chunk = parseChunk();\n if (options.comments) chunk.comments = comments;\n if (options.scope) chunk.globals = globals;\n if (locations.length > 0)\n throw new Error('Location tracking failed. This is most likely a bug in luaparse');\n\n return chunk;\n }\n\n}));\n\n});\n\nace.define(\"ace/mode/lua_worker\",[], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar Mirror = require(\"../worker/mirror\").Mirror;\nvar luaparse = require(\"../mode/lua/luaparse\");\n\nvar Worker = exports.Worker = function(sender) {\n Mirror.call(this, sender);\n this.setTimeout(500);\n};\n\noop.inherits(Worker, Mirror);\n\n(function() {\n\n this.onUpdate = function() {\n var value = this.doc.getValue();\n var errors = [];\n try {\n luaparse.parse(value);\n } catch(e) {\n if (e instanceof luaparse.SyntaxError) {\n errors.push({\n row: e.line - 1,\n column: e.column,\n text: e.message,\n type: \"error\"\n });\n }\n }\n this.sender.emit(\"annotate\", errors);\n };\n\n}).call(Worker.prototype);\n\n});\n"],"names":["window","msgs","message","file","line","col","err","parentId","moduleName","chunks","base","previous","id","module","path","resolveModuleId","paths","testPath","tail","alias","i","deps","factory","req","childId","returnExports","dep","topLevelNamespaces","EventEmitter","oop","Sender","data","callbackId","name","main","sender","e","msg","clazz","this","require","exports","ctor","superCtor","obj","mixin","key","proto","docLines","delta","doNotValidate","row","startColumn","lines","args","endColumn","endRow","stopPropagation","preventDefault","eventName","listeners","defaultHandler","callback","_self","newCallback","resolve","handlers","old","disabled","capturing","index","comparePoints","p1","p2","Range","startRow","range","column","cmp","end","start","p","firstRow","lastRow","session","screenPosStart","screenPosEnd","Anchor","doc","point","$getTransformedPoint","noClip","pos","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","applyDelta","Document","textOrLines","text","len","match","newLineMode","l","position","length","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","deltas","isInsert","docLength","MAX","from","to","chunk","newlineLength","a","string","count","result","trimBeginRegexp","trimEndRegexp","copy","array","deepCopy","arr","map","props","value","str","regExp","matches","fcn","timer","deferred","timeout","defaultTimeout","lang","Mirror","deferredUpdate","d","root","input","options","features","encodingMode","defaultOptions","encodeUTF8","codepoint","highMask","toHex","num","digits","checkChars","rx","s","m","raise","errors","encodingModes","EOF","StringLiteral","Keyword","Identifier","NumericLiteral","Punctuator","BooleanLiteral","NilLiteral","VarargLiteral","ast","label","clauses","condition","body","variables","init","expression","identifier","parameters","isLocal","variable","step","iterators","type","raw","fields","operator","left","right","argument","indexer","finishNode","node","trackLocations","location","locations","slice","indexOf","element","indexOfObject","property","sprintf","format","assign","dest","src","prop","fixupError","token","error","lineStart","tokenValue","raiseUnexpectedToken","unexpected","found","near","lookahead","previousToken","comments","tokenStart","lex","skipWhiteSpace","scanComment","charCode","next","isIdentifierStart","scanIdentifierOrKeyword","scanStringLiteral","scanNumericLiteral","isDecDigit","scanVarargLiteral","scanPunctuator","scanLongStringLiteral","consumeEOL","peekCharCode","isLineTerminator","isWhiteSpace","isIdentifierPart","isKeyword","delimiter","beginLine","beginLineStart","stringStart","beforeEscape","escapeValue","readEscapeSequence","readLongString","character","literal","readHexLiteral","readDecLiteral","foundImaginaryUnit","readImaginaryUnitSuffix","foundInt64Suffix","readInt64Suffix","fraction","binaryExponent","binarySign","digit","fractionStart","exponentStart","digitStart","isHexDigit","foundFraction","foundBinaryExponent","foundExponent","readUnicodeEscapeSequence","sequenceStart","escStart","b","frag","ddd","content","isLong","commentStart","lineStartComment","lineComment","isComment","level","terminator","firstLine","consume","expect","isUnary","isBlockFollow","scopes","scopeDepth","globals","createScope","scope","destroyScope","scopeIdentifierName","scopeIdentifier","attachScope","scopeHasName","createLocationMarker","Marker","loc","markLocation","pushLocation","marker","FullFlowContext","isLoop","theGoto","target","localCounts","newGotos","bads","LoopFlowContext","levels","levlen","makeFlowContext","parseChunk","flowContext","parseBlock","block","statement","parseStatement","parseLabelStatement","parseLocalStatement","parseIfStatement","parseReturnStatement","parseFunctionName","parseFunctionDeclaration","parseWhileStatement","parseForStatement","parseRepeatStatement","parseBreakStatement","parseDoStatement","parseGotoStatement","parseAssignmentOrCallStatement","nameToken","parseIdentifier","gotoToken","parseExpectedExpression","expressions","parseExpression","declToken","startMarker","lvalue","targets","both","parsePrefixExpressionPart","values","parameter","parsePrimaryExpression","parseTableConstructor","parseSubExpression","binaryPrecedence","minPrecedence","parsePrefixExpression","precedence","parseCallExpression","newBase","table","literals","parse","versionFeatures","_input","_options","write","luaparse","Worker"],"mappings":"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","x_google_ignoreList":[0]}