{"version":3,"file":"experiments-BajsLnc5.js","sources":["../../../node_modules/ace-builds/src-noconflict/ace.js","../../../node_modules/ace-builds/src-noconflict/mode-javascript.js","../../../node_modules/ace-builds/src-noconflict/mode-css.js","../../../node_modules/ace-builds/src-noconflict/mode-json.js","../../../node_modules/ace-builds/src-noconflict/mode-html.js","../../../node_modules/ace-builds/src-noconflict/theme-monokai.js","../../../node_modules/ace-builds/src-noconflict/theme-iplastic.js","../../../node_modules/ace-builds/src-noconflict/snippets/javascript.js","../../../node_modules/ace-builds/src-noconflict/ext-settings_menu.js","../../../node_modules/ace-builds/src-noconflict/ext-searchbox.js","../../../node_modules/ace-builds/src-noconflict/ext-language_tools.js","../../../node_modules/ace-builds/src-noconflict/worker-javascript.js?url","../../../app/javascript/experiment/ace.js","../../../app/javascript/experiment/uploader.js","../../../app/javascript/experiment/resource.svelte","../../../__vite-browser-external","../../../node_modules/process-nextick-args/index.js","../../../node_modules/isarray/index.js","../../../node_modules/readable-stream/lib/internal/streams/stream.js","../../../node_modules/safe-buffer/index.js","../../../node_modules/core-util-is/lib/util.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/inherits/inherits.js","../../../node_modules/readable-stream/lib/internal/streams/BufferList.js","../../../node_modules/readable-stream/lib/internal/streams/destroy.js","../../../node_modules/util-deprecate/node.js","../../../node_modules/readable-stream/lib/_stream_writable.js","../../../node_modules/readable-stream/lib/_stream_duplex.js","../../../node_modules/string_decoder/lib/string_decoder.js","../../../node_modules/readable-stream/lib/_stream_readable.js","../../../node_modules/readable-stream/lib/_stream_transform.js","../../../node_modules/readable-stream/lib/_stream_passthrough.js","../../../node_modules/readable-stream/readable.js","../../../node_modules/jszip/lib/support.js","../../../node_modules/jszip/lib/base64.js","../../../node_modules/jszip/lib/nodejsUtils.js","../../../node_modules/immediate/lib/index.js","../../../node_modules/lie/lib/index.js","../../../node_modules/jszip/lib/external.js","../../../node_modules/setimmediate/setImmediate.js","../../../node_modules/jszip/lib/utils.js","../../../node_modules/jszip/lib/stream/GenericWorker.js","../../../node_modules/jszip/lib/utf8.js","../../../node_modules/jszip/lib/stream/ConvertWorker.js","../../../node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js","../../../node_modules/jszip/lib/stream/StreamHelper.js","../../../node_modules/jszip/lib/defaults.js","../../../node_modules/jszip/lib/stream/DataWorker.js","../../../node_modules/jszip/lib/crc32.js","../../../node_modules/jszip/lib/stream/Crc32Probe.js","../../../node_modules/jszip/lib/stream/DataLengthProbe.js","../../../node_modules/jszip/lib/compressedObject.js","../../../node_modules/jszip/lib/zipObject.js","../../../node_modules/pako/lib/utils/common.js","../../../node_modules/pako/lib/zlib/trees.js","../../../node_modules/pako/lib/zlib/adler32.js","../../../node_modules/pako/lib/zlib/crc32.js","../../../node_modules/pako/lib/zlib/messages.js","../../../node_modules/pako/lib/zlib/deflate.js","../../../node_modules/pako/lib/utils/strings.js","../../../node_modules/pako/lib/zlib/zstream.js","../../../node_modules/pako/lib/deflate.js","../../../node_modules/pako/lib/zlib/inffast.js","../../../node_modules/pako/lib/zlib/inftrees.js","../../../node_modules/pako/lib/zlib/inflate.js","../../../node_modules/pako/lib/zlib/constants.js","../../../node_modules/pako/lib/zlib/gzheader.js","../../../node_modules/pako/lib/inflate.js","../../../node_modules/pako/index.js","../../../node_modules/jszip/lib/flate.js","../../../node_modules/jszip/lib/compressions.js","../../../node_modules/jszip/lib/signature.js","../../../node_modules/jszip/lib/generate/ZipFileWorker.js","../../../node_modules/jszip/lib/generate/index.js","../../../node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js","../../../node_modules/jszip/lib/object.js","../../../node_modules/jszip/lib/reader/DataReader.js","../../../node_modules/jszip/lib/reader/ArrayReader.js","../../../node_modules/jszip/lib/reader/StringReader.js","../../../node_modules/jszip/lib/reader/Uint8ArrayReader.js","../../../node_modules/jszip/lib/reader/NodeBufferReader.js","../../../node_modules/jszip/lib/reader/readerFor.js","../../../node_modules/jszip/lib/zipEntry.js","../../../node_modules/jszip/lib/zipEntries.js","../../../node_modules/jszip/lib/load.js","../../../node_modules/jszip/lib/index.js","../../../app/javascript/experiment/directory.svelte","../../../app/javascript/experiment/tree.svelte","../../../app/javascript/experiment/editor.svelte","../../../node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","../../../app/javascript/channels/consumer.js","../../../app/javascript/channels/results_channel.js","../../../app/javascript/experiment/actions.svelte","../../../app/javascript/experiment/experiment.svelte","../../../app/javascript/experiment/topbar.svelte","../../../app/javascript/entrypoints/experiments.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + 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 + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.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};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], 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 = require(\"./deep_copy\").deepCopy;\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, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window[\"opera\"]) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window[\"MSStream\"];\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], 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/lib/event_emitter\",[\"require\",\"exports\",\"module\"], 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/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e[\"data\"] = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/default_english_messages\",[\"require\",\"exports\",\"module\"], function(require, exports, module){var defaultEnglishMessages = {\n \"autocomplete.popup.aria-roledescription\": \"Autocomplete suggestions\",\n \"autocomplete.popup.aria-label\": \"Autocomplete suggestions\",\n \"autocomplete.popup.item.aria-roledescription\": \"item\",\n \"autocomplete.loading\": \"Loading...\",\n \"editor.scroller.aria-roledescription\": \"editor\",\n \"editor.scroller.aria-label\": \"Editor content, press Enter to start editing, press Escape to exit\",\n \"editor.gutter.aria-roledescription\": \"editor\",\n \"editor.gutter.aria-label\": \"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\",\n \"error-marker.good-state\": \"Looks good!\",\n \"prompt.recently-used\": \"Recently used\",\n \"prompt.other-commands\": \"Other commands\",\n \"prompt.no-matching-commands\": \"No matching commands\",\n \"search-box.find.placeholder\": \"Search for\",\n \"search-box.find-all.text\": \"All\",\n \"search-box.replace.placeholder\": \"Replace with\",\n \"search-box.replace-next.text\": \"Replace\",\n \"search-box.replace-all.text\": \"All\",\n \"search-box.toggle-replace.title\": \"Toggle Replace mode\",\n \"search-box.toggle-regexp.title\": \"RegExp Search\",\n \"search-box.toggle-case.title\": \"CaseSensitive Search\",\n \"search-box.toggle-whole-word.title\": \"Whole Word Search\",\n \"search-box.toggle-in-selection.title\": \"Search In Selection\",\n \"search-box.search-counter\": \"$0 of $1\",\n \"text-input.aria-roledescription\": \"editor\",\n \"text-input.aria-label\": \"Cursor at row $0\",\n \"gutter.code-folding.range.aria-label\": \"Toggle code folding, rows $0 through $1\",\n \"gutter.code-folding.closed.aria-label\": \"Toggle code folding, rows $0 through $1\",\n \"gutter.code-folding.open.aria-label\": \"Toggle code folding, row $0\",\n \"gutter.code-folding.closed.title\": \"Unfold code\",\n \"gutter.code-folding.open.title\": \"Fold code\",\n \"gutter.annotation.aria-label.error\": \"Error, read annotations row $0\",\n \"gutter.annotation.aria-label.warning\": \"Warning, read annotations row $0\",\n \"gutter.annotation.aria-label.info\": \"Info, read annotations row $0\",\n \"inline-fold.closed.title\": \"Unfold code\",\n \"gutter-tooltip.aria-label.error.singular\": \"error\",\n \"gutter-tooltip.aria-label.error.plural\": \"errors\",\n \"gutter-tooltip.aria-label.warning.singular\": \"warning\",\n \"gutter-tooltip.aria-label.warning.plural\": \"warnings\",\n \"gutter-tooltip.aria-label.info.singular\": \"information message\",\n \"gutter-tooltip.aria-label.info.plural\": \"information messages\"\n};\nexports.defaultEnglishMessages = defaultEnglishMessages;\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\",\"ace/lib/default_english_messages\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar defaultEnglishMessages = require(\"./default_english_messages\").defaultEnglishMessages;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar nlsPlaceholders;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n messages = defaultEnglishMessages;\n nlsPlaceholders = \"dollarSigns\";\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value, options) {\n messages = value;\n if (options && options.placeholders) {\n nlsPlaceholders = options.placeholders;\n }\n };\n AppConfig.prototype.nls = function (key, defaultString, params) {\n if (!messages[key]) {\n warn(\"No message found for the key '\" + key + \"' in the provided messages, trying to find a translation for the default string '\" + defaultString + \"'.\");\n if (!messages[defaultString]) {\n warn(\"No message found for the default string '\" + defaultString + \"' in the provided messages. Falling back to the default English message.\");\n }\n }\n var translated = messages[key] || messages[defaultString] || defaultString;\n if (params) {\n if (nlsPlaceholders === \"dollarSigns\") {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, dollarMatch) {\n if (dollarMatch == \"$\")\n return \"$\";\n return params[dollarMatch];\n });\n }\n if (nlsPlaceholders === \"curlyBrackets\") {\n translated = translated.replace(/\\{([^\\}]+)\\}/g, function (_, curlyBracketMatch) {\n return params[curlyBracketMatch];\n });\n }\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleId, onLoad) {\n var loadedModule;\n if (Array.isArray(moduleId)) {\n var moduleType = moduleId[0];\n var moduleName = moduleId[1];\n }\n else if (typeof moduleId == \"string\") {\n var moduleName = moduleId;\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module[\"require\"] == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.35.4\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + 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 = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n '-13': \"NumpadEnter\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 59: ';', 61: '=', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n};\nvar codeToKeyCode = {\n Command: 224,\n Backspace: 8,\n Tab: 9,\n Return: 13,\n Enter: 13,\n Pause: 19,\n Escape: 27,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n Insert: 45,\n Delete: 46,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n Backquote: 192,\n Minus: 189,\n Equal: 187,\n BracketLeft: 219,\n Backslash: 220,\n BracketRight: 221,\n Semicolon: 186,\n Quote: 222,\n Comma: 188,\n Period: 190,\n Slash: 191,\n Space: 32,\n NumpadAdd: 107,\n NumpadDecimal: 110,\n NumpadSubtract: 109,\n NumpadDivide: 111,\n NumpadMultiply: 106\n};\nfor (var i = 0; i < 10; i++) {\n codeToKeyCode[\"Digit\" + i] = 48 + i;\n codeToKeyCode[\"Numpad\" + i] = 96 + i;\n Keys.PRINTABLE_KEYS[48 + i] = \"\" + i;\n Keys.FUNCTION_KEYS[96 + i] = \"Numpad\" + i;\n}\nfor (var i = 65; i < 91; i++) {\n var chr = String.fromCharCode(i + 32);\n codeToKeyCode[\"Key\" + chr.toUpperCase()] = i;\n Keys.PRINTABLE_KEYS[i] = chr;\n}\nfor (var i = 1; i < 13; i++) {\n codeToKeyCode[\"F\" + i] = 111 + i;\n Keys.FUNCTION_KEYS[111 + i] = \"F\" + i;\n}\nvar modifiers = {\n Shift: 16,\n Control: 17,\n Alt: 18,\n Meta: 224\n};\nfor (var mod in modifiers) {\n codeToKeyCode[mod] = codeToKeyCode[mod + \"Left\"]\n = codeToKeyCode[mod + \"Right\"] = modifiers[mod];\n}\nexports.$codeToKeyCode = codeToKeyCode;\nKeys.PRINTABLE_KEYS[173] = '-';\nfor (var j in Keys.FUNCTION_KEYS) {\n var name = Keys.FUNCTION_KEYS[j].toLowerCase();\n Keys[name] = parseInt(j, 10);\n}\nfor (var j in Keys.PRINTABLE_KEYS) {\n var name = Keys.PRINTABLE_KEYS[j].toLowerCase();\n Keys[name] = parseInt(j, 10);\n}\noop.mixin(Keys, Keys.MODIFIER_KEYS);\noop.mixin(Keys, Keys.PRINTABLE_KEYS);\noop.mixin(Keys, Keys.FUNCTION_KEYS);\nKeys.enter = Keys[\"return\"];\nKeys.escape = Keys.esc;\nKeys.del = Keys[\"delete\"];\n(function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n Keys.KEY_MODS[i] = mods.filter(function (x) {\n return i & Keys.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n})();\nKeys.KEY_MODS[0] = \"\";\nKeys.KEY_MODS[-1] = \"input-\";\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\"; var keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n return true;\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, /**@type{any?}*/ destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nfunction getModifierHash(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n}\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!keyCode && e.code) {\n keyCode = keys.$codeToKeyCode[e.code] || keyCode;\n }\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = e.location;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n if (e.location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window[\"mozRequestAnimationFrame\"]\n || window[\"webkitRequestAnimationFrame\"]\n || window[\"msRequestAnimationFrame\"]\n || window[\"oRequestAnimationFrame\"]);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput;\nTextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", \"false\");\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"text-input.aria-roledescription\", \"editor\"));\n var arialLabel = \"\";\n if (host.$textInputAriaLabel) {\n arialLabel += \"\".concat(host.$textInputAriaLabel, \", \");\n }\n if (host.session) {\n var row = host.session.selection.cursor.row;\n arialLabel += nls(\"text-input.aria-label\", \"Cursor at row $0\", [row + 1]);\n }\n text.setAttribute(\"aria-label\", arialLabel);\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", \"true\");\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode()[\"host\"];\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window[\"clipboardData\"];\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, function (e, hashId, keyCode) {\n if (inComposition)\n return;\n return host.onCommandKey(e, hashId, keyCode);\n }, host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler[\"selectByLines\"] = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler[\"selectByWords\"] = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/lib/scroll\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.preventParentScroll = function preventParentScroll(event) {\n event.stopPropagation();\n var target = event.currentTarget;\n var contentOverflows = target.scrollHeight > target.clientHeight;\n if (!contentOverflows) {\n event.preventDefault();\n }\n};\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\",\"ace/lib/scroll\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar preventParentScroll = require(\"./lib/scroll\").preventParentScroll;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function (e) {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", preventParentScroll);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nvar lang = require(\"../lib/lang\");\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: {\n singular: nls(\"gutter-tooltip.aria-label.error.singular\", \"error\"),\n plural: nls(\"gutter-tooltip.aria-label.error.plural\", \"errors\")\n },\n warning: {\n singular: nls(\"gutter-tooltip.aria-label.warning.singular\", \"warning\"),\n plural: nls(\"gutter-tooltip.aria-label.warning.plural\", \"warnings\")\n },\n info: {\n singular: nls(\"gutter-tooltip.aria-label.info.singular\", \"information message\"),\n plural: nls(\"gutter-tooltip.aria-label.info.plural\", \"information messages\")\n }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var _a;\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { displayText: Array.from(annotationsInRow.displayText), type: Array.from(annotationsInRow.type) };\n else\n annotation = { displayText: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.displayText.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.displayText.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.displayText.length; i++) {\n var lineElement = dom.createElement(\"span\");\n var iconElement = dom.createElement(\"span\");\n (_a = iconElement.classList).add.apply(_a, [\"ace_\".concat(annotation.type[i]), iconClassName]);\n iconElement.setAttribute(\"aria-label\", \"\".concat(GutterTooltip.annotationLabels[annotation.type[i].replace(\"_fold\", \"\")].singular));\n iconElement.setAttribute(\"role\", \"img\");\n iconElement.appendChild(dom.createTextNode(\" \"));\n lineElement.appendChild(iconElement);\n lineElement.appendChild(dom.createTextNode(annotation.displayText[i]));\n lineElement.appendChild(dom.createElement(\"br\"));\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(lineElement);\n }\n var tooltipElement = this.getElement();\n dom.removeChildren(tooltipElement);\n annotationMessages.error.forEach(function (el) { return tooltipElement.appendChild(el); });\n annotationMessages.warning.forEach(function (el) { return tooltipElement.appendChild(el); });\n annotationMessages.info.forEach(function (el) { return tooltipElement.appendChild(el); });\n tooltipElement.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) { this.speed; this.wheelX; this.wheelY;\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && canExecuteCommand(\"selectall\") && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && canExecuteCommand(\"copy\") && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && canExecuteCommand(\"cut\") && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && canExecuteCommand(\"paste\") && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && canExecuteCommand(\"undo\") && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n canExecuteCommand(\"find\") && [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n canExecuteCommand(\"openCommandPalette\") && [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var canExecuteCommand = function (/** @type {string} */ cmd) {\n return editor.commands.canExecute(cmd, editor);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!editor.getOption(\"enableMobileMenu\")) {\n if (contextMenu) {\n hideContextMenu();\n }\n return;\n }\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) { this.$dragDelay; this.$dragEnabled; this.$mouseMoved; this.mouseEvent; this.$focusTimeout;\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, //@ts-expect-error TODO: seems mistyping - should be boolean\n editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(\n this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute[\"passEvent\"] != true && toExecute.command[\"passEvent\"] != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) { var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else { var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.splitRegex;\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = /**@type{string}*/ (startState) || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules;\nTextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state[\"processed\"] = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour;\nBehaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour;\nCstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n var token = session.getTokenAt(cursor.row, cursor.column);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (token && /(?:string)\\.quasi|\\.xml/.test(token.type)) {\n var excludeTokens = [\n /tag\\-(?:open|name)/, /attribute\\-name/\n ];\n if (excludeTokens.some(function (el) { return el.test(token.type); }) || /(string)\\.quasi/.test(token.type)\n && token.value[cursor.column - token.start - 1] !== '$')\n return;\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n if (cursor.column === 0) {\n return;\n }\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var tokens = session.getTokens(cursor.row);\n var index = 0;\n for (var i = 0; i < tokens.length; i++) {\n index += tokens[i].value.length;\n var currentToken = tokens[i];\n if (index >= cursor.column) {\n if (index === cursor.column) {\n if (!/\\.doc/.test(currentToken.type)) {\n return;\n }\n if (/\\*\\//.test(currentToken.value)) {\n var nextToken = tokens[i + 1];\n if (!nextToken || !/\\.doc/.test(nextToken.type)) {\n return;\n }\n }\n }\n var cursorPosInToken = cursor.column - (index - currentToken.value.length);\n var closeDocPos = currentToken.value.indexOf(\"*/\");\n var openDocPos = currentToken.value.indexOf(\"/**\", closeDocPos > -1 ? closeDocPos + 2 : 0);\n if (openDocPos !== -1 && cursorPosInToken > openDocPos && cursorPosInToken < openDocPos + 3) {\n return;\n }\n if (closeDocPos !== -1 && openDocPos !== -1 && cursorPosInToken >= closeDocPos\n && cursorPosInToken <= openDocPos || !/\\.doc/.test(currentToken.type)) {\n return;\n }\n break;\n }\n }\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 2 + indent.length, 1, 2 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour[\"$matchTokenType\"] = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour[\"recordAutoInsert\"] = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this[\"isAutoInsertedClosing\"](cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour[\"recordMaybeInsert\"] = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this[\"isMaybeInsertedClosing\"](cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour[\"isAutoInsertedClosing\"] = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour[\"isMaybeInsertedClosing\"] = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour[\"popAutoInsertedClosing\"] = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour[\"clearMaybeInsertedClosing\"] = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode;\nMode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n var _loop_1 = function (i) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] =\n function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this_1));\n };\n var this_1 = this;\n for (var i = 0; i < delegations.length; i++) {\n _loop_1(i);\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer[\"rules\"];\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], 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/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], 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 row != \"number\")\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\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], 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/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, session) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$keepRedoStack;\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){// @ts-nocheck\n\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator = new TokenIterator(this, row, column);\n var initState = this.getState(iterator.$row);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (initState.toString() !== state.toString())\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n if (prevToken.type.indexOf('tag-close') !== -1 && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) { this.doc;\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(/**@type{string}*/ (text));\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n if (typeof session == \"string\")\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = /**@type{string}*/ (mode) || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(/**@type{Point}*/ (docRow).row, /**@type{Point}*/ (docRow).column);\n else\n pos = this.$clipPositionToDocument(/**@type{number}*/ (docRow), docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.getPrecedingCharacter = function () {\n var pos = this.selection.getCursor();\n if (pos.column === 0) {\n return pos.row === 0 ? \"\" : this.doc.getNewLineCharacter();\n }\n var currentLine = this.getLine(pos.row);\n return currentLine[pos.column - 1];\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && /**@type{Range}*/ (options.start).start\n && options.skipCurrent != false && firstRange.isEqual(/**@type{Range}*/ (options.start))) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n if (!options.regExp) {\n replacement = replacement.replace(/\\$/g, \"$$$$\");\n }\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})(); var keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || /**@type{string}*/ (key) }); (key).split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!this.canExecute(command, editor)) {\n return false;\n }\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.canExecute = function (command, editor) {\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n return true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this[\"$useWrapMode\"] || !this[\"$wrapData\"][row]) {\n return 1 + h;\n }\n else {\n return this[\"$wrapData\"][row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = \"5\";\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = \"3\";\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(\n function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(\n function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) { this.session;\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges) {\n ranges = [\n tagNamesRanges.openTagName.isEmpty() ? tagNamesRanges.openTag : tagNamesRanges.openTagName,\n tagNamesRanges.closeTagName.isEmpty() ? tagNamesRanges.closeTag : tagNamesRanges.closeTagName\n ];\n }\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var ranges = this.selection.isEmpty()\n ? [new Range(0, 0, session.doc.getLength() - 1, 0)]\n : this.selection.getAllRanges();\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var tab = session.getTabString();\n for (var i = 0; i < ranges.length; i++) {\n var startRow = ranges[i].start.row;\n var endRow = ranges[i].end.row;\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n var line = session.getLine(row);\n var currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n var range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range));\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor.scroller.aria-roledescription\", \"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"editor.scroller.aria-label\", \"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor.gutter.aria-roledescription\", \"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"editor.gutter.aria-label\", \"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n this.textInput.setAriaOptions({\n setLabel: true\n });\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n textInputAriaLabel: {\n set: function (val) { this.$textInputAriaLabel = val; },\n initialValue: \"\"\n },\n enableMobileMenu: {\n set: function (val) { this.$enableMobileMenu = val; },\n initialValue: true\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (/**@type{EditSession}*/ session, /**@type{number}*/ row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, /**@type{number}*/ lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, /**@type{Editor}*/ editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (/**@type{Editor}*/ editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (/**@type{Editor}*/ editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [], displayText: [] };\n var annoText = annotation.text;\n var displayAnnoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n displayAnnoText = displayAnnoText ? displayAnnoText : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n rowInfo.displayText.push(displayAnnoText);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth; (this.element.parentNode).style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"gutter.code-folding.range.aria-label\", \"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"gutter.code-folding.closed.aria-label\", \"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"gutter.code-folding.open.aria-label\", \"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"gutter.code-folding.closed.title\", \"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"gutter.code-folding.open.title\", \"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n var ariaLabel;\n switch (foldAnnotationClass) {\n case \" ace_error_fold\":\n ariaLabel = nls(\"gutter.annotation.aria-label.error\", \"Read annotations row $0\", [rowText]);\n break;\n case \" ace_warning_fold\":\n ariaLabel = nls(\"gutter.annotation.aria-label.warning\", \"Read annotations row $0\", [rowText]);\n break;\n }\n annotationNode.setAttribute(\"aria-label\", ariaLabel);\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n var ariaLabel;\n switch (this.$annotations[row].className) {\n case \" ace_error\":\n ariaLabel = nls(\"gutter.annotation.aria-label.error\", \"Read annotations row $0\", [rowText]);\n break;\n case \" ace_warning\":\n ariaLabel = nls(\"gutter.annotation.aria-label.warning\", \"Read annotations row $0\", [rowText]);\n break;\n case \" ace_info\":\n ariaLabel = nls(\"gutter.annotation.aria-label.info\", \"Read annotations row $0\", [rowText]);\n break;\n }\n annotationNode.setAttribute(\"aria-label\", ariaLabel);\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(/**@type{Element}*/ (this.element.firstChild));\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", \n function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize; var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break; var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"inline-fold.closed.title\", \"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = /**@this{Cursor}*/ function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (Number(window.getComputedStyle(element)[\"zoom\"]) || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n overscroll-behavior: contain;\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n position: relative;\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n z-index: 1;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n}\\n\\n.ace_ghost_text_container > div {\\n white-space: pre;\\n}\\n\\n.ghost_text_line_wrapped::after {\\n content: \\\"\\u21A9\\\";\\n position: absolute;\\n}\\n\\n.ace_lineWidgetContainer.ace_ghost_text {\\n margin: 0px 4px\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\\n\\n.ace_hidden_token {\\n display: none;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\nvar isTextToken = require(\"./layer/text_util\").isTextToken;\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", \"true\");\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!height && this.$maxLines && this.lineHeight > 1) {\n if (!el.style.height || el.style.height == \"0px\") {\n el.style.height = \"1px\";\n height = el.clientHeight || el.scrollHeight;\n }\n }\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (printMarginColumn) {\n this.setOption(\"printMarginColumn\", printMarginColumn);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this._rows = rows;\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textChunks = this.$calculateWrappedTextChunks(text, insertPosition);\n this.addToken(textChunks[0].text, \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n var widgetDiv = dom.createElement(\"div\");\n if (textChunks.length > 1) {\n var hiddenTokens = this.hideTokensAfterPosition(insertPosition.row, insertPosition.column);\n var lastLineDiv;\n textChunks.slice(1).forEach(function (el) {\n var chunkDiv = dom.createElement(\"div\");\n var chunkSpan = dom.createElement(\"span\");\n chunkSpan.className = \"ace_ghost_text\";\n if (el.wrapped)\n chunkDiv.className = \"ghost_text_line_wrapped\";\n if (el.text.length === 0)\n el.text = \" \";\n chunkSpan.appendChild(dom.createTextNode(el.text));\n chunkDiv.appendChild(chunkSpan);\n widgetDiv.appendChild(chunkDiv);\n lastLineDiv = chunkDiv;\n });\n hiddenTokens.forEach(function (token) {\n var element = dom.createElement(\"span\");\n if (!isTextToken(token.type))\n element.className = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n element.appendChild(dom.createTextNode(token.value));\n lastLineDiv.appendChild(element);\n });\n this.$ghostTextWidget = {\n el: widgetDiv,\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text_container\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textChunks.length * this.lineHeight;\n var fitsY = ghostTextHeight < (height - pixelPosition.top);\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textChunks.length - 1) * this.lineHeight);\n }\n else {\n this.scrollToRow(insertPosition.row);\n }\n }\n };\n VirtualRenderer.prototype.$calculateWrappedTextChunks = function (text, position) {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth) - 2;\n limit = limit <= 0 ? 60 : limit; // this is a hack to prevent the editor from crashing when the window is too small\n var textLines = text.split(/\\r?\\n/);\n var textChunks = [];\n for (var i = 0; i < textLines.length; i++) {\n var displayTokens = this.session.$getDisplayTokens(textLines[i], position.column);\n var wrapSplits = this.session.$computeWrapSplits(displayTokens, limit, this.session.$tabSize);\n if (wrapSplits.length > 0) {\n var start = 0;\n wrapSplits.push(textLines[i].length);\n for (var j = 0; j < wrapSplits.length; j++) {\n var textSlice = textLines[i].slice(start, wrapSplits[j]);\n textChunks.push({ text: textSlice, wrapped: true });\n start = wrapSplits[j];\n }\n }\n else {\n textChunks.push({ text: textLines[i], wrapped: false });\n }\n }\n return textChunks;\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.hideTokensAfterPosition = function (row, column) {\n var tokens = this.session.getTokens(row);\n var l = 0;\n var hasPassedCursor = false;\n var hiddenTokens = [];\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (token.type === \"ghost_text\")\n continue;\n if (hasPassedCursor) {\n hiddenTokens.push({ type: token.type, value: token.value });\n token.type = \"hidden_token\";\n continue;\n }\n if (l === column) {\n hasPassedCursor = true;\n }\n }\n this.updateLines(row, row);\n return hiddenTokens;\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n if (useragent.isSafari && _self.scroller) {\n _self.scroller.style.background = \"red\";\n _self.scroller.style.background = \"\";\n }\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager()[\"$undostack\"] || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager[\"$undostack\"]).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){/**\n * commands to enter multiselect mode\n * @type {import(\"../../ace-internal\").Ace.Command[]}\n */\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){/**\n * @typedef {import(\"./anchor\").Anchor} Anchor\n * @typedef {import(\"../ace-internal\").Ace.Point} Point\n * @typedef {import(\"../ace-internal\").Ace.ScreenCoordinates} ScreenCoordinates\n */\nvar RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp_1 = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp_1.start.row;\n range.start.column = tmp_1.start.column;\n range.end.row = tmp_1.end.row;\n range.end.column = tmp_1.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n displayText: [nls(\"error-marker.good-state\", \"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n gutterAnno.displayText.forEach(function (annoTextLine, i) {\n el.appendChild(dom.createTextNode(annoTextLine));\n if (i < gutterAnno.displayText.length - 1) {\n el.appendChild(dom.createElement(\"br\"));\n }\n });\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @namespace Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.\\-\\'\\\" ]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc.body\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\", // doc comment\n regex: /\\/\\*\\*(?!\\/)/,\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywords = {\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\", // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n };\n var keywordMapper = this.createKeywordMapper(keywords, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n var anonymousFunctionRe = \"(function)(\\\\s*)(\\\\*?)\";\n var functionCallStartRule = {\n token: [\"identifier\", \"text\", \"paren.lparen\"],\n regex: \"(\\\\b(?!\" + Object.values(keywords).join(\"|\") + \"\\\\b)\" + identifierRe + \")(\\\\s*)(\\\\()\"\n };\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n functionCallStartRule,\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\", // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\", // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function)(?:(?:(\\\\s*)(\\\\*)(\\\\s*))|(\\\\s+))(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"keyword.operator\",\n regex: /=/\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function)(?:(?:(\\\\s*)(\\\\*)(\\\\s*))|(\\\\s+))(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: \"prototype\"\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\", // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\", // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=[^\\\\(]+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"))\",\n next: \"jsxAttributes\",\n nextState: \"jsx\"\n };\n this.$rules.start.unshift(jsxTag);\n var jsxJsRule = {\n regex: \"{\",\n token: \"paren.quasi.start\",\n push: \"start\"\n };\n this.$rules.jsx = [\n jsxJsRule,\n jsxTag,\n { include: \"reference\" }, { defaultToken: \"string.xml\" }\n ];\n this.$rules.jsxAttributes = [{\n token: \"meta.tag.punctuation.tag-close.xml\",\n regex: \"/?>\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\", // multi line comment\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements && this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (is(token, \"\") && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag] || !this.voidElements) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \"') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token)\n return;\n if (token.value == '<') {\n return {\n text: \">\",\n selection: [1, 1]\n };\n }\n }\n });\n};\noop.inherits(JavaScriptBehaviour, CstyleBehaviour);\nexports.JavaScriptBehaviour = JavaScriptBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (voidElements, optionalEndTags) {\n BaseFoldMode.call(this);\n this.voidElements = voidElements || {};\n this.optionalEndTags = oop.mixin({}, this.voidElements);\n if (optionalEndTags)\n oop.mixin(this.optionalEndTags, optionalEndTags);\n};\noop.inherits(FoldMode, BaseFoldMode);\nvar Tag = function () {\n this.tagName = \"\";\n this.closing = false;\n this.selfClosing = false;\n this.start = { row: 0, column: 0 };\n this.end = { row: 0, column: 0 };\n};\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn - 1)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (is(token, \"tag-name\") && token.value === \"\") {\n token = tokens[i + 2];\n }\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n if (!firstTag) {\n return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar XmlFoldMode = require(\"./xml\").FoldMode;\nvar CFoldMode = require(\"./cstyle\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n this.xmlFoldMode = new XmlFoldMode();\n};\noop.inherits(FoldMode, CFoldMode);\n(function () {\n this.getFoldWidgetRangeBase = this.getFoldWidgetRange;\n this.getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var fw = this.getFoldWidgetBase(session, foldStyle, row);\n if (!fw) {\n return this.xmlFoldMode.getFoldWidget(session, foldStyle, row);\n }\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var range = this.getFoldWidgetRangeBase(session, foldStyle, row, forceMultiline);\n if (range)\n return range;\n return this.xmlFoldMode.getFoldWidgetRange(session, foldStyle, row);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/javascript\",\"ace/mode/folding/javascript\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar JavaScriptBehaviour = require(\"./behaviour/javascript\").JavaScriptBehaviour;\nvar JavaScriptFoldMode = require(\"./folding/javascript\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new JavaScriptBehaviour();\n this.foldingRules = new JavaScriptFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\", // hex6 color\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\", // hex3 color\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\", // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\", // single line\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\", // hex\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\", // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\", // single quoted strings are not allowed\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\", // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\", // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\", // comments are not allowed, but who cares?\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.\\-\\'\\\" ]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc.body\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\", // doc comment\n regex: /\\/\\*\\*(?!\\/)/,\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywords = {\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\", // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n };\n var keywordMapper = this.createKeywordMapper(keywords, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n var anonymousFunctionRe = \"(function)(\\\\s*)(\\\\*?)\";\n var functionCallStartRule = {\n token: [\"identifier\", \"text\", \"paren.lparen\"],\n regex: \"(\\\\b(?!\" + Object.values(keywords).join(\"|\") + \"\\\\b)\" + identifierRe + \")(\\\\s*)(\\\\()\"\n };\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n functionCallStartRule,\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\", // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\", // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function)(?:(?:(\\\\s*)(\\\\*)(\\\\s*))|(\\\\s+))(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"keyword.operator\",\n regex: /=/\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function)(?:(?:(\\\\s*)(\\\\*)(\\\\s*))|(\\\\s+))(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: \"prototype\"\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\", // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\", // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=[^\\\\(]+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"))\",\n next: \"jsxAttributes\",\n nextState: \"jsx\"\n };\n this.$rules.start.unshift(jsxTag);\n var jsxJsRule = {\n regex: \"{\",\n token: \"paren.quasi.start\",\n push: \"start\"\n };\n this.$rules.jsx = [\n jsxJsRule,\n jsxTag,\n { include: \"reference\" }, { defaultToken: \"string.xml\" }\n ];\n this.$rules.jsxAttributes = [{\n token: \"meta.tag.punctuation.tag-close.xml\",\n regex: \"/?>\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\", // multi line comment\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements && this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (is(token, \"\") && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag] || !this.voidElements) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \"') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token)\n return;\n if (token.value == '<') {\n return {\n text: \">\",\n selection: [1, 1]\n };\n }\n }\n });\n};\noop.inherits(JavaScriptBehaviour, CstyleBehaviour);\nexports.JavaScriptBehaviour = JavaScriptBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (voidElements, optionalEndTags) {\n BaseFoldMode.call(this);\n this.voidElements = voidElements || {};\n this.optionalEndTags = oop.mixin({}, this.voidElements);\n if (optionalEndTags)\n oop.mixin(this.optionalEndTags, optionalEndTags);\n};\noop.inherits(FoldMode, BaseFoldMode);\nvar Tag = function () {\n this.tagName = \"\";\n this.closing = false;\n this.selfClosing = false;\n this.start = { row: 0, column: 0 };\n this.end = { row: 0, column: 0 };\n};\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn - 1)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (is(token, \"tag-name\") && token.value === \"\") {\n token = tokens[i + 2];\n }\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n if (!firstTag) {\n return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar XmlFoldMode = require(\"./xml\").FoldMode;\nvar CFoldMode = require(\"./cstyle\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n this.xmlFoldMode = new XmlFoldMode();\n};\noop.inherits(FoldMode, CFoldMode);\n(function () {\n this.getFoldWidgetRangeBase = this.getFoldWidgetRange;\n this.getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var fw = this.getFoldWidgetBase(session, foldStyle, row);\n if (!fw) {\n return this.xmlFoldMode.getFoldWidget(session, foldStyle, row);\n }\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var range = this.getFoldWidgetRangeBase(session, foldStyle, row, forceMultiline);\n if (range)\n return range;\n return this.xmlFoldMode.getFoldWidgetRange(session, foldStyle, row);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/javascript\",\"ace/mode/folding/javascript\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar JavaScriptBehaviour = require(\"./behaviour/javascript\").JavaScriptBehaviour;\nvar JavaScriptFoldMode = require(\"./folding/javascript\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new JavaScriptBehaviour();\n this.foldingRules = new JavaScriptFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\", // hex6 color\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\", // hex3 color\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar tagMap = lang.createMap({\n a: 'anchor',\n button: 'form',\n form: 'form',\n img: 'image',\n input: 'form',\n label: 'form',\n option: 'form',\n script: 'script',\n select: 'form',\n textarea: 'form',\n style: 'style',\n table: 'table',\n tbody: 'table',\n td: 'table',\n tfoot: 'table',\n th: 'table',\n tr: 'table'\n});\nvar HtmlHighlightRules = function () {\n XmlHighlightRules.call(this);\n this.addRules({\n attributes: [{\n include: \"tag_whitespace\"\n }, {\n token: \"entity.other.attribute-name.xml\",\n regex: \"[-_a-zA-Z0-9:.]+\"\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\",\n push: [{\n include: \"tag_whitespace\"\n }, {\n token: \"string.unquoted.attribute-value.html\",\n regex: \"[^<>='\\\"`\\\\s]+\",\n next: \"pop\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"pop\"\n }]\n }, {\n include: \"attribute_value\"\n }],\n tag: [{\n token: function (start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex: \"(\", next: \"start\" }\n ]\n });\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), \"js-\", \"script\");\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\nexports.HtmlHighlightRules = HtmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/mixed\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (defaultMode, subModes) {\n this.defaultMode = defaultMode;\n this.subModes = subModes;\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.$getMode = function (state) {\n if (typeof state != \"string\")\n state = state[0];\n for (var key in this.subModes) {\n if (state.indexOf(key) === 0)\n return this.subModes[key];\n }\n return null;\n };\n this.$tryMode = function (state, session, foldStyle, row) {\n var mode = this.$getMode(state);\n return (mode ? mode.getFoldWidget(session, foldStyle, row) : \"\");\n };\n this.getFoldWidget = function (session, foldStyle, row) {\n return (this.$tryMode(session.getState(row - 1), session, foldStyle, row) ||\n this.$tryMode(session.getState(row), session, foldStyle, row) ||\n this.defaultMode.getFoldWidget(session, foldStyle, row));\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var mode = this.$getMode(session.getState(row - 1));\n if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n mode = this.$getMode(session.getState(row));\n if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n mode = this.defaultMode;\n return mode.getFoldWidgetRange(session, foldStyle, row);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar MixedFoldMode = require(\"./mixed\").FoldMode;\nvar XmlFoldMode = require(\"./xml\").FoldMode;\nvar CStyleFoldMode = require(\"./cstyle\").FoldMode;\nvar FoldMode = exports.FoldMode = function (voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\nvar globalAttributes = commonAttributes.concat(eventAttributes);\nvar attributeMap = {\n \"a\": { \"href\": 1, \"target\": { \"_blank\": 1, \"top\": 1 }, \"ping\": 1, \"rel\": { \"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1 }, \"media\": 1, \"hreflang\": 1, \"type\": 1 },\n \"abbr\": {},\n \"address\": {},\n \"area\": { \"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1 },\n \"article\": { \"pubdate\": 1 },\n \"aside\": {},\n \"audio\": { \"src\": 1, \"autobuffer\": 1, \"autoplay\": { \"autoplay\": 1 }, \"loop\": { \"loop\": 1 }, \"controls\": { \"controls\": 1 }, \"muted\": { \"muted\": 1 }, \"preload\": { \"auto\": 1, \"metadata\": 1, \"none\": 1 } },\n \"b\": {},\n \"base\": { \"href\": 1, \"target\": 1 },\n \"bdi\": {},\n \"bdo\": {},\n \"blockquote\": { \"cite\": 1 },\n \"body\": { \"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1 },\n \"br\": {},\n \"button\": { \"autofocus\": 1, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": { \"button\": 1, \"submit\": 1 } },\n \"canvas\": { \"width\": 1, \"height\": 1 },\n \"caption\": {},\n \"cite\": {},\n \"code\": {},\n \"col\": { \"span\": 1 },\n \"colgroup\": { \"span\": 1 },\n \"command\": { \"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1 },\n \"data\": {},\n \"datalist\": {},\n \"dd\": {},\n \"del\": { \"cite\": 1, \"datetime\": 1 },\n \"details\": { \"open\": 1 },\n \"dfn\": {},\n \"dialog\": { \"open\": 1 },\n \"div\": {},\n \"dl\": {},\n \"dt\": {},\n \"em\": {},\n \"embed\": { \"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1 },\n \"fieldset\": { \"disabled\": 1, \"form\": 1, \"name\": 1 },\n \"figcaption\": {},\n \"figure\": {},\n \"footer\": {},\n \"form\": { \"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": { \"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1 }, \"method\": { \"get\": 1, \"post\": 1 }, \"name\": 1, \"novalidate\": 1, \"target\": { \"_blank\": 1, \"top\": 1 } },\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"head\": {},\n \"header\": {},\n \"hr\": {},\n \"html\": { \"manifest\": 1 },\n \"i\": {},\n \"iframe\": { \"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": { \"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1 }, \"seamless\": { \"seamless\": 1 } },\n \"img\": { \"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1 },\n \"input\": {\n \"type\": { \"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1 },\n \"accept\": 1, \"alt\": 1, \"autocomplete\": { \"on\": 1, \"off\": 1 }, \"autofocus\": { \"autofocus\": 1 }, \"checked\": { \"checked\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"formaction\": 1, \"formenctype\": { \"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1 }, \"formmethod\": { \"get\": 1, \"post\": 1 }, \"formnovalidate\": { \"formnovalidate\": 1 }, \"formtarget\": { \"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1 }, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": { \"multiple\": 1 }, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": { \"readonly\": 1 }, \"required\": { \"required\": 1 }, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1\n },\n \"ins\": { \"cite\": 1, \"datetime\": 1 },\n \"kbd\": {},\n \"keygen\": { \"autofocus\": 1, \"challenge\": { \"challenge\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"keytype\": { \"rsa\": 1, \"dsa\": 1, \"ec\": 1 }, \"name\": 1 },\n \"label\": { \"form\": 1, \"for\": 1 },\n \"legend\": {},\n \"li\": { \"value\": 1 },\n \"link\": { \"href\": 1, \"hreflang\": 1, \"rel\": { \"stylesheet\": 1, \"icon\": 1 }, \"media\": { \"all\": 1, \"screen\": 1, \"print\": 1 }, \"type\": { \"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1 }, \"sizes\": 1 },\n \"main\": {},\n \"map\": { \"name\": 1 },\n \"mark\": {},\n \"math\": {},\n \"menu\": { \"type\": 1, \"label\": 1 },\n \"meta\": { \"http-equiv\": { \"content-type\": 1 }, \"name\": { \"description\": 1, \"keywords\": 1 }, \"content\": { \"text/html; charset=UTF-8\": 1 }, \"charset\": 1 },\n \"meter\": { \"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1 },\n \"nav\": {},\n \"noscript\": { \"href\": 1 },\n \"object\": { \"param\": 1, \"data\": 1, \"type\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1 },\n \"ol\": { \"start\": 1, \"reversed\": 1 },\n \"optgroup\": { \"disabled\": 1, \"label\": 1 },\n \"option\": { \"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1 },\n \"output\": { \"for\": 1, \"form\": 1, \"name\": 1 },\n \"p\": {},\n \"param\": { \"name\": 1, \"value\": 1 },\n \"pre\": {},\n \"progress\": { \"value\": 1, \"max\": 1 },\n \"q\": { \"cite\": 1 },\n \"rp\": {},\n \"rt\": {},\n \"ruby\": {},\n \"s\": {},\n \"samp\": {},\n \"script\": { \"charset\": 1, \"type\": { \"text/javascript\": 1 }, \"src\": 1, \"defer\": 1, \"async\": 1 },\n \"select\": { \"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": { \"multiple\": 1 }, \"name\": 1, \"size\": 1, \"readonly\": { \"readonly\": 1 } },\n \"small\": {},\n \"source\": { \"src\": 1, \"type\": 1, \"media\": 1 },\n \"span\": {},\n \"strong\": {},\n \"style\": { \"type\": 1, \"media\": { \"all\": 1, \"screen\": 1, \"print\": 1 }, \"scoped\": 1 },\n \"sub\": {},\n \"sup\": {},\n \"svg\": {},\n \"table\": { \"summary\": 1 },\n \"tbody\": {},\n \"td\": { \"headers\": 1, \"rowspan\": 1, \"colspan\": 1 },\n \"textarea\": { \"autofocus\": { \"autofocus\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": { \"readonly\": 1 }, \"required\": { \"required\": 1 }, \"rows\": 1, \"cols\": 1, \"wrap\": { \"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1 } },\n \"tfoot\": {},\n \"th\": { \"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1 },\n \"thead\": {},\n \"time\": { \"datetime\": 1 },\n \"title\": {},\n \"tr\": {},\n \"track\": { \"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1 },\n \"section\": {},\n \"summary\": {},\n \"u\": {},\n \"ul\": {},\n \"var\": {},\n \"video\": { \"src\": 1, \"autobuffer\": 1, \"autoplay\": { \"autoplay\": 1 }, \"loop\": { \"loop\": 1 }, \"controls\": { \"controls\": 1 }, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": { \"muted\": 1 }, \"preload\": { \"auto\": 1, \"metadata\": 1, \"none\": 1 } },\n \"wbr\": {}\n};\nvar elements = Object.keys(attributeMap);\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")) {\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\nvar HtmlCompletions = function () {\n};\n(function () {\n this.getCompletions = function (state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n return [];\n };\n this.getTagCompletions = function (state, session, pos, prefix) {\n return elements.map(function (element) {\n return {\n value: element,\n meta: \"tag\",\n score: 1000000\n };\n });\n };\n this.getAttributeCompletions = function (state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function (attribute) {\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: 1000000\n };\n });\n };\n this.getAttributeValueCompletions = function (state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: 1000000\n };\n });\n };\n this.getHTMLEntityCompletions = function (state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: 1000000\n };\n });\n };\n}).call(HtmlCompletions.prototype);\nexports.HtmlCompletions = HtmlCompletions;\n\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptMode = require(\"./javascript\").Mode;\nvar CssMode = require(\"./css\").Mode;\nvar HtmlHighlightRules = require(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = require(\"./folding/html\").FoldMode;\nvar HtmlCompletions = require(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\nvar Mode = function (options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.blockComment = { start: \"\" };\n this.voidElements = lang.arrayToMap(voidElements);\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], \"ace/mode/html_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{ context: this.fragmentContext }]);\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/html\";\n this.snippetFileId = \"ace/snippets/html\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/html\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/monokai-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-monokai .ace_gutter {\\n background: #2F3129;\\n color: #8F908A\\n}\\n\\n.ace-monokai .ace_print-margin {\\n width: 1px;\\n background: #555651\\n}\\n\\n.ace-monokai {\\n background-color: #272822;\\n color: #F8F8F2\\n}\\n\\n.ace-monokai .ace_cursor {\\n color: #F8F8F0\\n}\\n\\n.ace-monokai .ace_marker-layer .ace_selection {\\n background: #49483E\\n}\\n\\n.ace-monokai.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px #272822;\\n}\\n\\n.ace-monokai .ace_marker-layer .ace_step {\\n background: rgb(102, 82, 0)\\n}\\n\\n.ace-monokai .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid #49483E\\n}\\n\\n.ace-monokai .ace_marker-layer .ace_active-line {\\n background: #202020\\n}\\n\\n.ace-monokai .ace_gutter-active-line {\\n background-color: #272727\\n}\\n\\n.ace-monokai .ace_marker-layer .ace_selected-word {\\n border: 1px solid #49483E\\n}\\n\\n.ace-monokai .ace_invisible {\\n color: #52524d\\n}\\n\\n.ace-monokai .ace_entity.ace_name.ace_tag,\\n.ace-monokai .ace_keyword,\\n.ace-monokai .ace_meta.ace_tag,\\n.ace-monokai .ace_storage {\\n color: #F92672\\n}\\n\\n.ace-monokai .ace_punctuation,\\n.ace-monokai .ace_punctuation.ace_tag {\\n color: #fff\\n}\\n\\n.ace-monokai .ace_constant.ace_character,\\n.ace-monokai .ace_constant.ace_language,\\n.ace-monokai .ace_constant.ace_numeric,\\n.ace-monokai .ace_constant.ace_other {\\n color: #AE81FF\\n}\\n\\n.ace-monokai .ace_invalid {\\n color: #F8F8F0;\\n background-color: #F92672\\n}\\n\\n.ace-monokai .ace_invalid.ace_deprecated {\\n color: #F8F8F0;\\n background-color: #AE81FF\\n}\\n\\n.ace-monokai .ace_support.ace_constant,\\n.ace-monokai .ace_support.ace_function {\\n color: #66D9EF\\n}\\n\\n.ace-monokai .ace_fold {\\n background-color: #A6E22E;\\n border-color: #F8F8F2\\n}\\n\\n.ace-monokai .ace_storage.ace_type,\\n.ace-monokai .ace_support.ace_class,\\n.ace-monokai .ace_support.ace_type {\\n font-style: italic;\\n color: #66D9EF\\n}\\n\\n.ace-monokai .ace_entity.ace_name.ace_function,\\n.ace-monokai .ace_entity.ace_other,\\n.ace-monokai .ace_entity.ace_other.ace_attribute-name,\\n.ace-monokai .ace_variable {\\n color: #A6E22E\\n}\\n\\n.ace-monokai .ace_variable.ace_parameter {\\n font-style: italic;\\n color: #FD971F\\n}\\n\\n.ace-monokai .ace_string {\\n color: #E6DB74\\n}\\n\\n.ace-monokai .ace_comment {\\n color: #75715E\\n}\\n\\n.ace-monokai .ace_indent-guide {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y\\n}\\n\\n.ace-monokai .ace_indent-guide-active {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/monokai\",[\"require\",\"exports\",\"module\",\"ace/theme/monokai-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = true;\nexports.cssClass = \"ace-monokai\";\nexports.cssText = require(\"./monokai-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/monokai\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/iplastic-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-iplastic .ace_gutter {\\n background: #dddddd;\\n color: #666666\\n}\\n\\n.ace-iplastic .ace_print-margin {\\n width: 1px;\\n background: #bbbbbb\\n}\\n\\n.ace-iplastic {\\n background-color: #eeeeee;\\n color: #333333\\n}\\n\\n.ace-iplastic .ace_cursor {\\n color: #333\\n}\\n\\n.ace-iplastic .ace_marker-layer .ace_selection {\\n background: #BAD6FD;\\n}\\n\\n.ace-iplastic.ace_multiselect .ace_selection.ace_start {\\n border-radius: 4px\\n}\\n\\n.ace-iplastic .ace_marker-layer .ace_step {\\n background: #444444\\n}\\n\\n.ace-iplastic .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid #49483E;\\n background: #FFF799\\n}\\n\\n.ace-iplastic .ace_marker-layer .ace_active-line {\\n background: #e5e5e5\\n}\\n\\n.ace-iplastic .ace_gutter-active-line {\\n background-color: #eeeeee\\n}\\n\\n.ace-iplastic .ace_marker-layer .ace_selected-word {\\n border: 1px solid #555555;\\n border-radius:4px\\n}\\n\\n.ace-iplastic .ace_invisible {\\n color: #999999\\n}\\n\\n.ace-iplastic .ace_entity.ace_name.ace_tag,\\n.ace-iplastic .ace_keyword,\\n.ace-iplastic .ace_meta.ace_tag,\\n.ace-iplastic .ace_storage {\\n color: #0000FF\\n}\\n\\n.ace-iplastic .ace_punctuation,\\n.ace-iplastic .ace_punctuation.ace_tag {\\n color: #000\\n}\\n\\n.ace-iplastic .ace_constant {\\n color: #333333;\\n font-weight: 700\\n}\\n\\n.ace-iplastic .ace_constant.ace_character,\\n.ace-iplastic .ace_constant.ace_language,\\n.ace-iplastic .ace_constant.ace_numeric,\\n.ace-iplastic .ace_constant.ace_other {\\n color: #0066FF;\\n font-weight: 700\\n}\\n\\n.ace-iplastic .ace_constant.ace_numeric{\\n font-weight: 100\\n}\\n\\n.ace-iplastic .ace_invalid {\\n color: #F8F8F0;\\n background-color: #F92672\\n}\\n\\n.ace-iplastic .ace_invalid.ace_deprecated {\\n color: #F8F8F0;\\n background-color: #AE81FF\\n}\\n\\n.ace-iplastic .ace_support.ace_constant,\\n.ace-iplastic .ace_support.ace_function {\\n color: #333333;\\n font-weight: 700\\n}\\n\\n.ace-iplastic .ace_fold {\\n background-color: #464646;\\n border-color: #F8F8F2\\n}\\n\\n.ace-iplastic .ace_storage.ace_type,\\n.ace-iplastic .ace_support.ace_class,\\n.ace-iplastic .ace_support.ace_type {\\n color: #3333fc;\\n font-weight: 700\\n}\\n\\n.ace-iplastic .ace_entity.ace_name.ace_function,\\n.ace-iplastic .ace_entity.ace_other,\\n.ace-iplastic .ace_entity.ace_other.ace_attribute-name,\\n.ace-iplastic .ace_variable {\\n color: #3366cc;\\n font-style: italic\\n}\\n\\n.ace-iplastic .ace_variable.ace_parameter {\\n font-style: italic;\\n color: #2469E0\\n}\\n\\n.ace-iplastic .ace_string {\\n color: #a55f03\\n}\\n\\n.ace-iplastic .ace_comment {\\n color: #777777;\\n font-style: italic\\n}\\n\\n.ace-iplastic .ace_fold-widget {\\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);\\n}\\n\\n.ace-iplastic .ace_indent-guide {\\n background: url(data:image/png;base64,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) right repeat-y\\n}\\n\\n.ace-iplastic .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/iplastic\",[\"require\",\"exports\",\"module\",\"ace/theme/iplastic-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-iplastic\";\nexports.cssText = require(\"./iplastic-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/iplastic\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/snippets/javascript.snippets\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"# Prototype\\nsnippet proto\\n\\t${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\\n\\t\\t${4:// body...}\\n\\t};\\n# Function\\nsnippet fun\\n\\tfunction ${1?:function_name}(${2:argument}) {\\n\\t\\t${3:// body...}\\n\\t}\\n# Anonymous Function\\nregex /((=)\\\\s*|(:)\\\\s*|(\\\\()|\\\\b)/f/(\\\\))?/\\nsnippet f\\n\\tfunction${M1?: ${1:functionName}}($2) {\\n\\t\\t${0:$TM_SELECTED_TEXT}\\n\\t}${M2?;}${M3?,}${M4?)}\\n# Immediate function\\ntrigger \\\\(?f\\\\(\\nendTrigger \\\\)?\\nsnippet f(\\n\\t(function(${1}) {\\n\\t\\t${0:${TM_SELECTED_TEXT:/* code */}}\\n\\t}(${1}));\\n# if\\nsnippet if\\n\\tif (${1:true}) {\\n\\t\\t${0}\\n\\t}\\n# if ... else\\nsnippet ife\\n\\tif (${1:true}) {\\n\\t\\t${2}\\n\\t} else {\\n\\t\\t${0}\\n\\t}\\n# tertiary conditional\\nsnippet ter\\n\\t${1:/* condition */} ? ${2:a} : ${3:b}\\n# switch\\nsnippet switch\\n\\tswitch (${1:expression}) {\\n\\t\\tcase '${3:case}':\\n\\t\\t\\t${4:// code}\\n\\t\\t\\tbreak;\\n\\t\\t${5}\\n\\t\\tdefault:\\n\\t\\t\\t${2:// code}\\n\\t}\\n# case\\nsnippet case\\n\\tcase '${1:case}':\\n\\t\\t${2:// code}\\n\\t\\tbreak;\\n\\t${3}\\n\\n# while (...) {...}\\nsnippet wh\\n\\twhile (${1:/* condition */}) {\\n\\t\\t${0:/* code */}\\n\\t}\\n# try\\nsnippet try\\n\\ttry {\\n\\t\\t${0:/* code */}\\n\\t} catch (e) {}\\n# do...while\\nsnippet do\\n\\tdo {\\n\\t\\t${2:/* code */}\\n\\t} while (${1:/* condition */});\\n# Object Method\\nsnippet :f\\nregex /([,{[])|^\\\\s*/:f/\\n\\t${1:method_name}: function(${2:attribute}) {\\n\\t\\t${0}\\n\\t}${3:,}\\n# setTimeout function\\nsnippet setTimeout\\nregex /\\\\b/st|timeout|setTimeo?u?t?/\\n\\tsetTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\\n# Get Elements\\nsnippet gett\\n\\tgetElementsBy${1:TagName}('${2}')${3}\\n# Get Element\\nsnippet get\\n\\tgetElementBy${1:Id}('${2}')${3}\\n# console.log (Firebug)\\nsnippet cl\\n\\tconsole.log(${1});\\n# return\\nsnippet ret\\n\\treturn ${1:result}\\n# for (property in object ) { ... }\\nsnippet fori\\n\\tfor (var ${1:prop} in ${2:Things}) {\\n\\t\\t${0:$2[$1]}\\n\\t}\\n# hasOwnProperty\\nsnippet has\\n\\thasOwnProperty(${1})\\n# docstring\\nsnippet /**\\n\\t/**\\n\\t * ${1:description}\\n\\t *\\n\\t */\\nsnippet @par\\nregex /^\\\\s*\\\\*\\\\s*/@(para?m?)?/\\n\\t@param {${1:type}} ${2:name} ${3:description}\\nsnippet @ret\\n\\t@return {${1:type}} ${2:description}\\n# JSON.parse\\nsnippet jsonp\\n\\tJSON.parse(${1:jstr});\\n# JSON.stringify\\nsnippet jsons\\n\\tJSON.stringify(${1:object});\\n# self-defining function\\nsnippet sdf\\n\\tvar ${1:function_name} = function(${2:argument}) {\\n\\t\\t${3:// initial code ...}\\n\\n\\t\\t$1 = function($2) {\\n\\t\\t\\t${4:// main code}\\n\\t\\t};\\n\\t}\\n# singleton\\nsnippet sing\\n\\tfunction ${1:Singleton} (${2:argument}) {\\n\\t\\t// the cached instance\\n\\t\\tvar instance;\\n\\n\\t\\t// rewrite the constructor\\n\\t\\t$1 = function $1($2) {\\n\\t\\t\\treturn instance;\\n\\t\\t};\\n\\t\\t\\n\\t\\t// carry over the prototype properties\\n\\t\\t$1.prototype = this;\\n\\n\\t\\t// the instance\\n\\t\\tinstance = new $1();\\n\\n\\t\\t// reset the constructor pointer\\n\\t\\tinstance.constructor = $1;\\n\\n\\t\\t${3:// code ...}\\n\\n\\t\\treturn instance;\\n\\t}\\n# class\\nsnippet class\\nregex /^\\\\s*/clas{0,2}/\\n\\tvar ${1:class} = function(${20}) {\\n\\t\\t$40$0\\n\\t};\\n\\t\\n\\t(function() {\\n\\t\\t${60:this.prop = \\\"\\\"}\\n\\t}).call(${1:class}.prototype);\\n\\t\\n\\texports.${1:class} = ${1:class};\\n# \\nsnippet for-\\n\\tfor (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\\n\\t\\t${0:${2:Things}[${1:i}];}\\n\\t}\\n# for (...) {...}\\nsnippet for\\n\\tfor (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\\n\\t\\t${3:$2[$1]}$0\\n\\t}\\n# for (...) {...} (Improved Native For-Loop)\\nsnippet forr\\n\\tfor (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\\n\\t\\t${3:$2[$1]}$0\\n\\t}\\n\\n\\n#modules\\nsnippet def\\n\\tdefine(function(require, exports, module) {\\n\\t\\\"use strict\\\";\\n\\tvar ${1/.*\\\\///} = require(\\\"${1}\\\");\\n\\t\\n\\t$TM_SELECTED_TEXT\\n\\t});\\nsnippet req\\nguard ^\\\\s*\\n\\tvar ${1/.*\\\\///} = require(\\\"${1}\\\");\\n\\t$0\\nsnippet requ\\nguard ^\\\\s*\\n\\tvar ${1/.*\\\\/(.)/\\\\u$1/} = require(\\\"${1}\\\").${1/.*\\\\/(.)/\\\\u$1/};\\n\\t$0\\n\";\n\n});\n\nace.define(\"ace/snippets/javascript\",[\"require\",\"exports\",\"module\",\"ace/snippets/javascript.snippets\"], function(require, exports, module){\"use strict\";\nexports.snippetText = require(\"./javascript.snippets\");\nexports.scope = \"javascript\";\n\n}); (function() {\n ace.require([\"ace/snippets/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/menu_tools/settings_menu.css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"#ace_settingsmenu, #kbshortcutmenu {\\n background-color: #F7F7F7;\\n color: black;\\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\\n padding: 1em 0.5em 2em 1em;\\n overflow: auto;\\n position: absolute;\\n margin: 0;\\n bottom: 0;\\n right: 0;\\n top: 0;\\n z-index: 9991;\\n cursor: default;\\n}\\n\\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\\n background-color: rgba(255, 255, 255, 0.6);\\n color: black;\\n}\\n\\n.ace_optionsMenuEntry:hover {\\n background-color: rgba(100, 100, 100, 0.1);\\n transition: all 0.3s\\n}\\n\\n.ace_closeButton {\\n background: rgba(245, 146, 146, 0.5);\\n border: 1px solid #F48A8A;\\n border-radius: 50%;\\n padding: 7px;\\n position: absolute;\\n right: -8px;\\n top: -8px;\\n z-index: 100000;\\n}\\n.ace_closeButton{\\n background: rgba(245, 146, 146, 0.9);\\n}\\n.ace_optionsMenuKey {\\n color: darkslateblue;\\n font-weight: bold;\\n}\\n.ace_optionsMenuCommand {\\n color: darkcyan;\\n font-weight: normal;\\n}\\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\\n vertical-align: middle;\\n}\\n\\n.ace_optionsMenuEntry button[ace_selected_button=true] {\\n background: #e7e7e7;\\n box-shadow: 1px 0px 2px 0px #adadad inset;\\n border-color: #adadad;\\n}\\n.ace_optionsMenuEntry button {\\n background: white;\\n border: 1px solid lightgray;\\n margin: 0px;\\n}\\n.ace_optionsMenuEntry button:hover{\\n background: #f0f0f0;\\n}\";\n\n});\n\nace.define(\"ace/ext/menu_tools/overlay_page\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/ext/menu_tools/settings_menu.css\"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/\n'use strict';\nvar dom = require(\"../../lib/dom\");\nvar cssText = require(\"./settings_menu.css\");\ndom.importCssString(cssText, \"settings_menu.css\", false);\nmodule.exports.overlayPage = function overlayPage(editor, contentElement, callback) {\n var closer = document.createElement('div');\n var ignoreFocusOut = false;\n function documentEscListener(e) {\n if (e.keyCode === 27) {\n close();\n }\n }\n function close() {\n if (!closer)\n return;\n document.removeEventListener('keydown', documentEscListener);\n closer.parentNode.removeChild(closer);\n if (editor) {\n editor.focus();\n }\n closer = null;\n callback && callback();\n }\n function setIgnoreFocusOut(ignore) {\n ignoreFocusOut = ignore;\n if (ignore) {\n closer.style.pointerEvents = \"none\";\n contentElement.style.pointerEvents = \"auto\";\n }\n }\n closer.style.cssText = 'margin: 0; padding: 0; ' +\n 'position: fixed; top:0; bottom:0; left:0; right:0;' +\n 'z-index: 9990; ' +\n (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : '');\n closer.addEventListener('click', function (e) {\n if (!ignoreFocusOut) {\n close();\n }\n });\n document.addEventListener('keydown', documentEscListener);\n contentElement.addEventListener('click', function (e) {\n e.stopPropagation();\n });\n closer.appendChild(contentElement);\n document.body.appendChild(closer);\n if (editor) {\n editor.blur();\n }\n return {\n close: close,\n setIgnoreFocusOut: setIgnoreFocusOut\n };\n};\n\n});\n\nace.define(\"ace/ext/modelist\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar modes = [];\nfunction getModeForPath(path) {\n var mode = modesByName.text;\n var fileName = path.split(/[\\/\\\\]/).pop();\n for (var i = 0; i < modes.length; i++) {\n if (modes[i].supportsFile(fileName)) {\n mode = modes[i];\n break;\n }\n }\n return mode;\n}\nvar Mode = /** @class */ (function () {\n function Mode(name, caption, extensions) {\n this.name = name;\n this.caption = caption;\n this.mode = \"ace/mode/\" + name;\n this.extensions = extensions;\n var re;\n if (/\\^/.test(extensions)) {\n re = extensions.replace(/\\|(\\^)?/g, function (a, b) {\n return \"$|\" + (b ? \"^\" : \"^.*\\\\.\");\n }) + \"$\";\n }\n else {\n re = \"^.*\\\\.(\" + extensions + \")$\";\n }\n this.extRe = new RegExp(re, \"gi\");\n }\n Mode.prototype.supportsFile = function (filename) {\n return filename.match(this.extRe);\n };\n return Mode;\n}());\nvar supportedModes = {\n ABAP: [\"abap\"],\n ABC: [\"abc\"],\n ActionScript: [\"as\"],\n ADA: [\"ada|adb\"],\n Alda: [\"alda\"],\n Apache_Conf: [\"^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd\"],\n Apex: [\"apex|cls|trigger|tgr\"],\n AQL: [\"aql\"],\n AsciiDoc: [\"asciidoc|adoc\"],\n ASL: [\"dsl|asl|asl.json\"],\n Assembly_ARM32: [\"s\"],\n Assembly_x86: [\"asm|a\"],\n Astro: [\"astro\"],\n AutoHotKey: [\"ahk\"],\n BatchFile: [\"bat|cmd\"],\n BibTeX: [\"bib\"],\n C_Cpp: [\"cpp|c|cc|cxx|h|hh|hpp|ino\"],\n C9Search: [\"c9search_results\"],\n Cirru: [\"cirru|cr\"],\n Clojure: [\"clj|cljs\"],\n Cobol: [\"CBL|COB\"],\n coffee: [\"coffee|cf|cson|^Cakefile\"],\n ColdFusion: [\"cfm|cfc\"],\n Crystal: [\"cr\"],\n CSharp: [\"cs\"],\n Csound_Document: [\"csd\"],\n Csound_Orchestra: [\"orc\"],\n Csound_Score: [\"sco\"],\n CSS: [\"css\"],\n Curly: [\"curly\"],\n Cuttlefish: [\"conf\"],\n D: [\"d|di\"],\n Dart: [\"dart\"],\n Diff: [\"diff|patch\"],\n Django: [\"djt|html.djt|dj.html|djhtml\"],\n Dockerfile: [\"^Dockerfile\"],\n Dot: [\"dot\"],\n Drools: [\"drl\"],\n Edifact: [\"edi\"],\n Eiffel: [\"e|ge\"],\n EJS: [\"ejs\"],\n Elixir: [\"ex|exs\"],\n Elm: [\"elm\"],\n Erlang: [\"erl|hrl\"],\n Flix: [\"flix\"],\n Forth: [\"frt|fs|ldr|fth|4th\"],\n Fortran: [\"f|f90\"],\n FSharp: [\"fsi|fs|ml|mli|fsx|fsscript\"],\n FSL: [\"fsl\"],\n FTL: [\"ftl\"],\n Gcode: [\"gcode\"],\n Gherkin: [\"feature\"],\n Gitignore: [\"^.gitignore\"],\n Glsl: [\"glsl|frag|vert\"],\n Gobstones: [\"gbs\"],\n golang: [\"go\"],\n GraphQLSchema: [\"gql\"],\n Groovy: [\"groovy\"],\n HAML: [\"haml\"],\n Handlebars: [\"hbs|handlebars|tpl|mustache\"],\n Haskell: [\"hs\"],\n Haskell_Cabal: [\"cabal\"],\n haXe: [\"hx\"],\n Hjson: [\"hjson\"],\n HTML: [\"html|htm|xhtml|we|wpy\"],\n HTML_Elixir: [\"eex|html.eex\"],\n HTML_Ruby: [\"erb|rhtml|html.erb\"],\n INI: [\"ini|conf|cfg|prefs\"],\n Io: [\"io\"],\n Ion: [\"ion\"],\n Jack: [\"jack\"],\n Jade: [\"jade|pug\"],\n Java: [\"java\"],\n JavaScript: [\"js|jsm|cjs|mjs\"],\n JEXL: [\"jexl\"],\n JSON: [\"json\"],\n JSON5: [\"json5\"],\n JSONiq: [\"jq\"],\n JSP: [\"jsp\"],\n JSSM: [\"jssm|jssm_state\"],\n JSX: [\"jsx\"],\n Julia: [\"jl\"],\n Kotlin: [\"kt|kts\"],\n LaTeX: [\"tex|latex|ltx|bib\"],\n Latte: [\"latte\"],\n LESS: [\"less\"],\n Liquid: [\"liquid\"],\n Lisp: [\"lisp\"],\n LiveScript: [\"ls\"],\n Log: [\"log\"],\n LogiQL: [\"logic|lql\"],\n Logtalk: [\"lgt\"],\n LSL: [\"lsl\"],\n Lua: [\"lua\"],\n LuaPage: [\"lp\"],\n Lucene: [\"lucene\"],\n Makefile: [\"^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make\"],\n Markdown: [\"md|markdown\"],\n Mask: [\"mask\"],\n MATLAB: [\"matlab\"],\n Maze: [\"mz\"],\n MediaWiki: [\"wiki|mediawiki\"],\n MEL: [\"mel\"],\n MIPS: [\"s|asm\"],\n MIXAL: [\"mixal\"],\n MUSHCode: [\"mc|mush\"],\n MySQL: [\"mysql\"],\n Nasal: [\"nas\"],\n Nginx: [\"nginx|conf\"],\n Nim: [\"nim\"],\n Nix: [\"nix\"],\n NSIS: [\"nsi|nsh\"],\n Nunjucks: [\"nunjucks|nunjs|nj|njk\"],\n ObjectiveC: [\"m|mm\"],\n OCaml: [\"ml|mli\"],\n Odin: [\"odin\"],\n PartiQL: [\"partiql|pql\"],\n Pascal: [\"pas|p\"],\n Perl: [\"pl|pm\"],\n pgSQL: [\"pgsql\"],\n PHP: [\"php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module\"],\n PHP_Laravel_blade: [\"blade.php\"],\n Pig: [\"pig\"],\n PLSQL: [\"plsql\"],\n Powershell: [\"ps1\"],\n Praat: [\"praat|praatscript|psc|proc\"],\n Prisma: [\"prisma\"],\n Prolog: [\"plg|prolog\"],\n Properties: [\"properties\"],\n Protobuf: [\"proto\"],\n PRQL: [\"prql\"],\n Puppet: [\"epp|pp\"],\n Python: [\"py\"],\n QML: [\"qml\"],\n R: [\"r\"],\n Raku: [\"raku|rakumod|rakutest|p6|pl6|pm6\"],\n Razor: [\"cshtml|asp\"],\n RDoc: [\"Rd\"],\n Red: [\"red|reds\"],\n RHTML: [\"Rhtml\"],\n Robot: [\"robot|resource\"],\n RST: [\"rst\"],\n Ruby: [\"rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile\"],\n Rust: [\"rs\"],\n SaC: [\"sac\"],\n SASS: [\"sass\"],\n SCAD: [\"scad\"],\n Scala: [\"scala|sbt\"],\n Scheme: [\"scm|sm|rkt|oak|scheme\"],\n Scrypt: [\"scrypt\"],\n SCSS: [\"scss\"],\n SH: [\"sh|bash|^.bashrc\"],\n SJS: [\"sjs\"],\n Slim: [\"slim|skim\"],\n Smarty: [\"smarty|tpl\"],\n Smithy: [\"smithy\"],\n snippets: [\"snippets\"],\n Soy_Template: [\"soy\"],\n Space: [\"space\"],\n SPARQL: [\"rq\"],\n SQL: [\"sql\"],\n SQLServer: [\"sqlserver\"],\n Stylus: [\"styl|stylus\"],\n SVG: [\"svg\"],\n Swift: [\"swift\"],\n Tcl: [\"tcl\"],\n Terraform: [\"tf\", \"tfvars\", \"terragrunt\"],\n Tex: [\"tex\"],\n Text: [\"txt\"],\n Textile: [\"textile\"],\n Toml: [\"toml\"],\n TSX: [\"tsx\"],\n Turtle: [\"ttl\"],\n Twig: [\"twig|swig\"],\n Typescript: [\"ts|mts|cts|typescript|str\"],\n Vala: [\"vala\"],\n VBScript: [\"vbs|vb\"],\n Velocity: [\"vm\"],\n Verilog: [\"v|vh|sv|svh\"],\n VHDL: [\"vhd|vhdl\"],\n Visualforce: [\"vfp|component|page\"],\n Vue: [\"vue\"],\n Wollok: [\"wlk|wpgm|wtest\"],\n XML: [\"xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml\"],\n XQuery: [\"xq\"],\n YAML: [\"yaml|yml\"],\n Zeek: [\"zeek|bro\"],\n Zig: [\"zig\"]\n};\nvar nameOverrides = {\n ObjectiveC: \"Objective-C\",\n CSharp: \"C#\",\n golang: \"Go\",\n C_Cpp: \"C and C++\",\n Csound_Document: \"Csound Document\",\n Csound_Orchestra: \"Csound\",\n Csound_Score: \"Csound Score\",\n coffee: \"CoffeeScript\",\n HTML_Ruby: \"HTML (Ruby)\",\n HTML_Elixir: \"HTML (Elixir)\",\n FTL: \"FreeMarker\",\n PHP_Laravel_blade: \"PHP (Blade Template)\",\n Perl6: \"Perl 6\",\n AutoHotKey: \"AutoHotkey / AutoIt\"\n};\nvar modesByName = {};\nfor (var name in supportedModes) {\n var data = supportedModes[name];\n var displayName = (nameOverrides[name] || name).replace(/_/g, \" \");\n var filename = name.toLowerCase();\n var mode = new Mode(filename, displayName, data[0]);\n modesByName[filename] = mode;\n modes.push(mode);\n}\nmodule.exports = {\n getModeForPath: getModeForPath,\n modes: modes,\n modesByName: modesByName\n};\n\n});\n\nace.define(\"ace/ext/themelist\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/**\n * Generates a list of themes available when ace was built.\n * @fileOverview Generates a list of themes available when ace was built.\n * @author \n * Matthew Christopher Kastor-Inare III
\n * ☭ Hial Atropa!! ☭\n */\n\"use strict\";\nvar themeData = [\n [\"Chrome\"],\n [\"Clouds\"],\n [\"Crimson Editor\"],\n [\"Dawn\"],\n [\"Dreamweaver\"],\n [\"Eclipse\"],\n [\"GitHub Light Default\"],\n [\"GitHub (Legacy)\", \"github\", \"light\"],\n [\"IPlastic\"],\n [\"Solarized Light\"],\n [\"TextMate\"],\n [\"Tomorrow\"],\n [\"XCode\"],\n [\"Kuroir\"],\n [\"KatzenMilch\"],\n [\"SQL Server\", \"sqlserver\", \"light\"],\n [\"CloudEditor\", \"cloud_editor\", \"light\"],\n [\"Ambiance\", \"ambiance\", \"dark\"],\n [\"Chaos\", \"chaos\", \"dark\"],\n [\"Clouds Midnight\", \"clouds_midnight\", \"dark\"],\n [\"Dracula\", \"\", \"dark\"],\n [\"Cobalt\", \"cobalt\", \"dark\"],\n [\"Gruvbox\", \"gruvbox\", \"dark\"],\n [\"Green on Black\", \"gob\", \"dark\"],\n [\"idle Fingers\", \"idle_fingers\", \"dark\"],\n [\"krTheme\", \"kr_theme\", \"dark\"],\n [\"Merbivore\", \"merbivore\", \"dark\"],\n [\"Merbivore Soft\", \"merbivore_soft\", \"dark\"],\n [\"Mono Industrial\", \"mono_industrial\", \"dark\"],\n [\"Monokai\", \"monokai\", \"dark\"],\n [\"Nord Dark\", \"nord_dark\", \"dark\"],\n [\"One Dark\", \"one_dark\", \"dark\"],\n [\"Pastel on dark\", \"pastel_on_dark\", \"dark\"],\n [\"Solarized Dark\", \"solarized_dark\", \"dark\"],\n [\"Terminal\", \"terminal\", \"dark\"],\n [\"Tomorrow Night\", \"tomorrow_night\", \"dark\"],\n [\"Tomorrow Night Blue\", \"tomorrow_night_blue\", \"dark\"],\n [\"Tomorrow Night Bright\", \"tomorrow_night_bright\", \"dark\"],\n [\"Tomorrow Night 80s\", \"tomorrow_night_eighties\", \"dark\"],\n [\"Twilight\", \"twilight\", \"dark\"],\n [\"Vibrant Ink\", \"vibrant_ink\", \"dark\"],\n [\"GitHub Dark\", \"github_dark\", \"dark\"],\n [\"CloudEditor Dark\", \"cloud_editor_dark\", \"dark\"]\n];\nexports.themesByName = {};\nexports.themes = themeData.map(function (data) {\n var name = data[1] || data[0].replace(/ /g, \"_\").toLowerCase();\n var theme = {\n caption: data[0],\n theme: \"ace/theme/\" + name,\n isDark: data[2] == \"dark\",\n name: name\n };\n exports.themesByName[name] = theme;\n return theme;\n});\n\n});\n\nace.define(\"ace/ext/options\",[\"require\",\"exports\",\"module\",\"ace/ext/menu_tools/overlay_page\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/ext/modelist\",\"ace/ext/themelist\"], function(require, exports, module){\"use strict\";\nrequire(\"./menu_tools/overlay_page\");\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar config = require(\"../config\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar buildDom = dom.buildDom;\nvar modelist = require(\"./modelist\");\nvar themelist = require(\"./themelist\");\nvar themes = { Bright: [], Dark: [] };\nthemelist.themes.forEach(function (x) {\n themes[x.isDark ? \"Dark\" : \"Bright\"].push({ caption: x.caption, value: x.theme });\n});\nvar modes = modelist.modes.map(function (x) {\n return { caption: x.caption, value: x.mode };\n});\nvar optionGroups = {\n Main: {\n Mode: {\n path: \"mode\",\n type: \"select\",\n items: modes\n },\n Theme: {\n path: \"theme\",\n type: \"select\",\n items: themes\n },\n \"Keybinding\": {\n type: \"buttonBar\",\n path: \"keyboardHandler\",\n items: [\n { caption: \"Ace\", value: null },\n { caption: \"Vim\", value: \"ace/keyboard/vim\" },\n { caption: \"Emacs\", value: \"ace/keyboard/emacs\" },\n { caption: \"Sublime\", value: \"ace/keyboard/sublime\" },\n { caption: \"VSCode\", value: \"ace/keyboard/vscode\" }\n ]\n },\n \"Font Size\": {\n path: \"fontSize\",\n type: \"number\",\n defaultValue: 12,\n defaults: [\n { caption: \"12px\", value: 12 },\n { caption: \"24px\", value: 24 }\n ]\n },\n \"Soft Wrap\": {\n type: \"buttonBar\",\n path: \"wrap\",\n items: [\n { caption: \"Off\", value: \"off\" },\n { caption: \"View\", value: \"free\" },\n { caption: \"margin\", value: \"printMargin\" },\n { caption: \"40\", value: \"40\" }\n ]\n },\n \"Cursor Style\": {\n path: \"cursorStyle\",\n items: [\n { caption: \"Ace\", value: \"ace\" },\n { caption: \"Slim\", value: \"slim\" },\n { caption: \"Smooth\", value: \"smooth\" },\n { caption: \"Smooth And Slim\", value: \"smooth slim\" },\n { caption: \"Wide\", value: \"wide\" }\n ]\n },\n \"Folding\": {\n path: \"foldStyle\",\n items: [\n { caption: \"Manual\", value: \"manual\" },\n { caption: \"Mark begin\", value: \"markbegin\" },\n { caption: \"Mark begin and end\", value: \"markbeginend\" }\n ]\n },\n \"Soft Tabs\": [{\n path: \"useSoftTabs\"\n }, {\n ariaLabel: \"Tab Size\",\n path: \"tabSize\",\n type: \"number\",\n values: [2, 3, 4, 8, 16]\n }],\n \"Overscroll\": {\n type: \"buttonBar\",\n path: \"scrollPastEnd\",\n items: [\n { caption: \"None\", value: 0 },\n { caption: \"Half\", value: 0.5 },\n { caption: \"Full\", value: 1 }\n ]\n }\n },\n More: {\n \"Atomic soft tabs\": {\n path: \"navigateWithinSoftTabs\"\n },\n \"Enable Behaviours\": {\n path: \"behavioursEnabled\"\n },\n \"Wrap with quotes\": {\n path: \"wrapBehavioursEnabled\"\n },\n \"Enable Auto Indent\": {\n path: \"enableAutoIndent\"\n },\n \"Full Line Selection\": {\n type: \"checkbox\",\n values: \"text|line\",\n path: \"selectionStyle\"\n },\n \"Highlight Active Line\": {\n path: \"highlightActiveLine\"\n },\n \"Show Invisibles\": {\n path: \"showInvisibles\"\n },\n \"Show Indent Guides\": {\n path: \"displayIndentGuides\"\n },\n \"Highlight Indent Guides\": {\n path: \"highlightIndentGuides\"\n },\n \"Persistent HScrollbar\": {\n path: \"hScrollBarAlwaysVisible\"\n },\n \"Persistent VScrollbar\": {\n path: \"vScrollBarAlwaysVisible\"\n },\n \"Animate scrolling\": {\n path: \"animatedScroll\"\n },\n \"Show Gutter\": {\n path: \"showGutter\"\n },\n \"Show Line Numbers\": {\n path: \"showLineNumbers\"\n },\n \"Relative Line Numbers\": {\n path: \"relativeLineNumbers\"\n },\n \"Fixed Gutter Width\": {\n path: \"fixedWidthGutter\"\n },\n \"Show Print Margin\": [{\n path: \"showPrintMargin\"\n }, {\n ariaLabel: \"Print Margin\",\n type: \"number\",\n path: \"printMarginColumn\"\n }],\n \"Indented Soft Wrap\": {\n path: \"indentedSoftWrap\"\n },\n \"Highlight selected word\": {\n path: \"highlightSelectedWord\"\n },\n \"Fade Fold Widgets\": {\n path: \"fadeFoldWidgets\"\n },\n \"Use textarea for IME\": {\n path: \"useTextareaForIME\"\n },\n \"Merge Undo Deltas\": {\n path: \"mergeUndoDeltas\",\n items: [\n { caption: \"Always\", value: \"always\" },\n { caption: \"Never\", value: \"false\" },\n { caption: \"Timed\", value: \"true\" }\n ]\n },\n \"Elastic Tabstops\": {\n path: \"useElasticTabstops\"\n },\n \"Incremental Search\": {\n path: \"useIncrementalSearch\"\n },\n \"Read-only\": {\n path: \"readOnly\"\n },\n \"Copy without selection\": {\n path: \"copyWithEmptySelection\"\n },\n \"Live Autocompletion\": {\n path: \"enableLiveAutocompletion\"\n },\n \"Custom scrollbar\": {\n path: \"customScrollbar\"\n },\n \"Use SVG gutter icons\": {\n path: \"useSvgGutterIcons\"\n },\n \"Annotations for folded lines\": {\n path: \"showFoldedAnnotations\"\n },\n \"Keyboard Accessibility Mode\": {\n path: \"enableKeyboardAccessibility\"\n },\n \"Gutter tooltip follows mouse\": {\n path: \"tooltipFollowsMouse\",\n defaultValue: true\n }\n }\n};\nvar OptionPanel = /** @class */ (function () {\n function OptionPanel(editor, element) {\n this.editor = editor;\n this.container = element || document.createElement(\"div\");\n this.groups = [];\n this.options = {};\n }\n OptionPanel.prototype.add = function (config) {\n if (config.Main)\n oop.mixin(optionGroups.Main, config.Main);\n if (config.More)\n oop.mixin(optionGroups.More, config.More);\n };\n OptionPanel.prototype.render = function () {\n this.container.innerHTML = \"\";\n buildDom([\"table\", { role: \"presentation\", id: \"controls\" },\n this.renderOptionGroup(optionGroups.Main),\n [\"tr\", null, [\"td\", { colspan: 2 },\n [\"table\", { role: \"presentation\", id: \"more-controls\" },\n this.renderOptionGroup(optionGroups.More)\n ]\n ]],\n [\"tr\", null, [\"td\", { colspan: 2 }, \"version \" + config.version]]\n ], this.container);\n };\n OptionPanel.prototype.renderOptionGroup = function (group) {\n return Object.keys(group).map(function (key, i) {\n var item = group[key];\n if (!item.position)\n item.position = i / 10000;\n if (!item.label)\n item.label = key;\n return item;\n }).sort(function (a, b) {\n return a.position - b.position;\n }).map(function (item) {\n return this.renderOption(item.label, item);\n }, this);\n };\n OptionPanel.prototype.renderOptionControl = function (key, option) {\n var self = this;\n if (Array.isArray(option)) {\n return option.map(function (x) {\n return self.renderOptionControl(key, x);\n });\n }\n var control;\n var value = self.getOption(option);\n if (option.values && option.type != \"checkbox\") {\n if (typeof option.values == \"string\")\n option.values = option.values.split(\"|\");\n option.items = option.values.map(function (v) {\n return { value: v, name: v };\n });\n }\n if (option.type == \"buttonBar\") {\n control = [\"div\", { role: \"group\", \"aria-labelledby\": option.path + \"-label\" }, option.items.map(function (item) {\n return [\"button\", {\n value: item.value,\n ace_selected_button: value == item.value,\n 'aria-pressed': value == item.value,\n onclick: function () {\n self.setOption(option, item.value);\n var nodes = this.parentNode.querySelectorAll(\"[ace_selected_button]\");\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].removeAttribute(\"ace_selected_button\");\n nodes[i].setAttribute(\"aria-pressed\", false);\n }\n this.setAttribute(\"ace_selected_button\", true);\n this.setAttribute(\"aria-pressed\", true);\n }\n }, item.desc || item.caption || item.name];\n })];\n }\n else if (option.type == \"number\") {\n control = [\"input\", { type: \"number\", value: value || option.defaultValue, style: \"width:3em\", oninput: function () {\n self.setOption(option, parseInt(this.value));\n } }];\n if (option.ariaLabel) {\n control[1][\"aria-label\"] = option.ariaLabel;\n }\n else {\n control[1].id = key;\n }\n if (option.defaults) {\n control = [control, option.defaults.map(function (item) {\n return [\"button\", { onclick: function () {\n var input = this.parentNode.firstChild;\n input.value = item.value;\n input.oninput();\n } }, item.caption];\n })];\n }\n }\n else if (option.items) {\n var buildItems = function (items) {\n return items.map(function (item) {\n return [\"option\", { value: item.value || item.name }, item.desc || item.caption || item.name];\n });\n };\n var items = Array.isArray(option.items)\n ? buildItems(option.items)\n : Object.keys(option.items).map(function (key) {\n return [\"optgroup\", { \"label\": key }, buildItems(option.items[key])];\n });\n control = [\"select\", { id: key, value: value, onchange: function () {\n self.setOption(option, this.value);\n } }, items];\n }\n else {\n if (typeof option.values == \"string\")\n option.values = option.values.split(\"|\");\n if (option.values)\n value = value == option.values[1];\n control = [\"input\", { type: \"checkbox\", id: key, checked: value || null, onchange: function () {\n var value = this.checked;\n if (option.values)\n value = option.values[value ? 1 : 0];\n self.setOption(option, value);\n } }];\n if (option.type == \"checkedNumber\") {\n control = [control, []];\n }\n }\n return control;\n };\n OptionPanel.prototype.renderOption = function (key, option) {\n if (option.path && !option.onchange && !this.editor.$options[option.path])\n return;\n var path = Array.isArray(option) ? option[0].path : option.path;\n this.options[path] = option;\n var safeKey = \"-\" + path;\n var safeId = path + \"-label\";\n var control = this.renderOptionControl(safeKey, option);\n return [\"tr\", { class: \"ace_optionsMenuEntry\" }, [\"td\",\n [\"label\", { for: safeKey, id: safeId }, key]\n ], [\"td\", control]];\n };\n OptionPanel.prototype.setOption = function (option, value) {\n if (typeof option == \"string\")\n option = this.options[option];\n if (value == \"false\")\n value = false;\n if (value == \"true\")\n value = true;\n if (value == \"null\")\n value = null;\n if (value == \"undefined\")\n value = undefined;\n if (typeof value == \"string\" && parseFloat(value).toString() == value)\n value = parseFloat(value);\n if (option.onchange)\n option.onchange(value);\n else if (option.path)\n this.editor.setOption(option.path, value);\n this._signal(\"setOption\", { name: option.path, value: value });\n };\n OptionPanel.prototype.getOption = function (option) {\n if (option.getValue)\n return option.getValue();\n return this.editor.getOption(option.path);\n };\n return OptionPanel;\n}());\noop.implement(OptionPanel.prototype, EventEmitter);\nexports.OptionPanel = OptionPanel;\n\n});\n\nace.define(\"ace/ext/settings_menu\",[\"require\",\"exports\",\"module\",\"ace/ext/options\",\"ace/ext/menu_tools/overlay_page\",\"ace/editor\"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/\n\"use strict\";\nvar OptionPanel = require(\"./options\").OptionPanel;\nvar overlayPage = require('./menu_tools/overlay_page').overlayPage;\nfunction showSettingsMenu(editor) {\n if (!document.getElementById('ace_settingsmenu')) {\n var options = new OptionPanel(editor);\n options.render();\n options.container.id = \"ace_settingsmenu\";\n overlayPage(editor, options.container);\n options.container.querySelector(\"select,input,button,checkbox\").focus();\n }\n}\nmodule.exports.init = function () {\n var Editor = require(\"../editor\").Editor;\n Editor.prototype.showSettingsMenu = function () {\n showSettingsMenu(this);\n };\n};\n\n}); (function() {\n ace.require([\"ace/ext/settings_menu\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n this.activeInput;\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"search-box.find.placeholder\", \"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"search-box.find-all.text\", \"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"search-box.replace.placeholder\", \"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"search-box.replace-next.text\", \"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"search-box.replace-all.text\", \"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"search-box.toggle-replace.title\", \"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"search-box.toggle-regexp.title\", \"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"search-box.toggle-case.title\", \"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"search-box.toggle-whole-word.title\", \"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"search-box.toggle-in-selection.title\", \"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var supportsUnicodeFlag = regex.unicode;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag);\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"search-box.search-counter\", \"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/snippets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/lang\",\"ace/range\",\"ace/range_list\",\"ace/keyboard/hash_handler\",\"ace/tokenizer\",\"ace/clipboard\",\"ace/editor\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar RangeList = require(\"./range_list\").RangeList;\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar Tokenizer = require(\"./tokenizer\").Tokenizer;\nvar clipboard = require(\"./clipboard\");\nvar VARIABLES = {\n CURRENT_WORD: function (editor) {\n return editor.session.getTextRange(editor.session.getWordRange());\n },\n SELECTION: function (editor, name, indentation) {\n var text = editor.session.getTextRange();\n if (indentation)\n return text.replace(/\\n\\r?([ \\t]*\\S)/g, \"\\n\" + indentation + \"$1\");\n return text;\n },\n CURRENT_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row);\n },\n PREV_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row - 1);\n },\n LINE_INDEX: function (editor) {\n return editor.getCursorPosition().row;\n },\n LINE_NUMBER: function (editor) {\n return editor.getCursorPosition().row + 1;\n },\n SOFT_TABS: function (editor) {\n return editor.session.getUseSoftTabs() ? \"YES\" : \"NO\";\n },\n TAB_SIZE: function (editor) {\n return editor.session.getTabSize();\n },\n CLIPBOARD: function (editor) {\n return clipboard.getText && clipboard.getText();\n },\n FILENAME: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0];\n },\n FILENAME_BASE: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\\.[^.]*$/, \"\");\n },\n DIRECTORY: function (editor) {\n return this.FILEPATH(editor).replace(/[^/\\\\]*$/, \"\");\n },\n FILEPATH: function (editor) { return \"/not implemented.txt\"; },\n WORKSPACE_NAME: function () { return \"Unknown\"; },\n FULLNAME: function () { return \"Unknown\"; },\n BLOCK_COMMENT_START: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.start || \"\";\n },\n BLOCK_COMMENT_END: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.end || \"\";\n },\n LINE_COMMENT: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.lineCommentStart || \"\";\n },\n CURRENT_YEAR: date.bind(null, { year: \"numeric\" }),\n CURRENT_YEAR_SHORT: date.bind(null, { year: \"2-digit\" }),\n CURRENT_MONTH: date.bind(null, { month: \"numeric\" }),\n CURRENT_MONTH_NAME: date.bind(null, { month: \"long\" }),\n CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: \"short\" }),\n CURRENT_DATE: date.bind(null, { day: \"2-digit\" }),\n CURRENT_DAY_NAME: date.bind(null, { weekday: \"long\" }),\n CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: \"short\" }),\n CURRENT_HOUR: date.bind(null, { hour: \"2-digit\", hour12: false }),\n CURRENT_MINUTE: date.bind(null, { minute: \"2-digit\" }),\n CURRENT_SECOND: date.bind(null, { second: \"2-digit\" })\n};\nVARIABLES.SELECTED_TEXT = VARIABLES.SELECTION;\nfunction date(dateFormat) {\n var str = new Date().toLocaleString(\"en-us\", dateFormat);\n return str.length == 1 ? \"0\" + str : str;\n}\nvar SnippetManager = /** @class */ (function () {\n function SnippetManager() {\n this.snippetMap = {};\n this.snippetNameMap = {};\n this.variables = VARIABLES;\n }\n SnippetManager.prototype.getTokenizer = function () {\n return SnippetManager[\"$tokenizer\"] || this.createTokenizer();\n };\n SnippetManager.prototype.createTokenizer = function () {\n function TabstopToken(str) {\n str = str.substr(1);\n if (/^\\d+$/.test(str))\n return [{ tabstopId: parseInt(str, 10) }];\n return [{ text: str }];\n }\n function escape(ch) {\n return \"(?:[^\\\\\\\\\" + ch + \"]|\\\\\\\\.)\";\n }\n var formatMatcher = {\n regex: \"/(\" + escape(\"/\") + \"+)/\",\n onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.fmtString = true;\n ts.guard = val.slice(1, -1);\n ts.flag = \"\";\n return \"\";\n },\n next: \"formatString\"\n };\n SnippetManager[\"$tokenizer\"] = new Tokenizer({\n start: [\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length) {\n val = ch;\n }\n else if (\"`$\\\\\".indexOf(ch) != -1) {\n val = ch;\n }\n return [val];\n } },\n { regex: /}/, onMatch: function (val, state, stack) {\n return [stack.length ? stack.shift() : val];\n } },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: TabstopToken },\n { regex: /\\$\\{[\\dA-Z_a-z]+/, onMatch: function (str, state, stack) {\n var t = TabstopToken(str.substr(1));\n stack.unshift(t[0]);\n return t;\n }, next: \"snippetVar\" },\n { regex: /\\n/, token: \"newline\", merge: false }\n ],\n snippetVar: [\n { regex: \"\\\\|\" + escape(\"\\\\|\") + \"*\\\\|\", onMatch: function (val, state, stack) {\n var choices = val.slice(1, -1).replace(/\\\\[,|\\\\]|,/g, function (operator) {\n return operator.length == 2 ? operator[1] : \"\\x00\";\n }).split(\"\\x00\").map(function (value) {\n return { value: value };\n });\n stack[0].choices = choices;\n return [choices[0]];\n }, next: \"start\" },\n formatMatcher,\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"start\" }\n ],\n formatString: [\n { regex: /:/, onMatch: function (val, state, stack) {\n if (stack.length && stack[0].expectElse) {\n stack[0].expectElse = false;\n stack[0].ifEnd = { elseEnd: stack[0] };\n return [stack[0].ifEnd];\n }\n return \":\";\n } },\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length)\n val = ch;\n else if (\"`$\\\\\".indexOf(ch) != -1)\n val = ch;\n else if (ch == \"n\")\n val = \"\\n\";\n else if (ch == \"t\")\n val = \"\\t\";\n else if (\"ulULE\".indexOf(ch) != -1)\n val = { changeCase: ch, local: ch > \"a\" };\n return [val];\n } },\n { regex: \"/\\\\w*}\", onMatch: function (val, state, stack) {\n var next = stack.shift();\n if (next)\n next.flag = val.slice(1, -1);\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: function (val, state, stack) {\n return [{ text: val.slice(1) }];\n } },\n { regex: /\\${\\w+/, onMatch: function (val, state, stack) {\n var token = { text: val.slice(2) };\n stack.unshift(token);\n return [token];\n }, next: \"formatStringVar\" },\n { regex: /\\n/, token: \"newline\", merge: false },\n { regex: /}/, onMatch: function (val, state, stack) {\n var next = stack.shift();\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" }\n ],\n formatStringVar: [\n { regex: /:\\/\\w+}/, onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.formatFunction = val.slice(2, -1);\n return [stack.shift()];\n }, next: \"formatString\" },\n formatMatcher,\n { regex: /:[\\?\\-+]?/, onMatch: function (val, state, stack) {\n if (val[1] == \"+\")\n stack[0].ifEnd = stack[0];\n if (val[1] == \"?\")\n stack[0].expectElse = true;\n }, next: \"formatString\" },\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"formatString\" }\n ]\n });\n return SnippetManager[\"$tokenizer\"];\n };\n SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) {\n return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) {\n return x.value || x;\n });\n };\n SnippetManager.prototype.getVariableValue = function (editor, name, indentation) {\n if (/^\\d+$/.test(name))\n return (this.variables.__ || {})[name] || \"\";\n if (/^[A-Z]\\d+$/.test(name))\n return (this.variables[name[0] + \"__\"] || {})[name.substr(1)] || \"\";\n name = name.replace(/^TM_/, \"\");\n if (!this.variables.hasOwnProperty(name))\n return \"\";\n var value = this.variables[name];\n if (typeof value == \"function\")\n value = this.variables[name](editor, name, indentation);\n return value == null ? \"\" : value;\n };\n SnippetManager.prototype.tmStrFormat = function (str, ch, editor) {\n if (!ch.fmt)\n return str;\n var flag = ch.flag || \"\";\n var re = ch.guard;\n re = new RegExp(re, flag.replace(/[^gim]/g, \"\"));\n var fmtTokens = typeof ch.fmt == \"string\" ? this.tokenizeTmSnippet(ch.fmt, \"formatString\") : ch.fmt;\n var _self = this;\n var formatted = str.replace(re, function () {\n var oldArgs = _self.variables.__;\n _self.variables.__ = [].slice.call(arguments);\n var fmtParts = _self.resolveVariables(fmtTokens, editor);\n var gChangeCase = \"E\";\n for (var i = 0; i < fmtParts.length; i++) {\n var ch = fmtParts[i];\n if (typeof ch == \"object\") {\n fmtParts[i] = \"\";\n if (ch.changeCase && ch.local) {\n var next = fmtParts[i + 1];\n if (next && typeof next == \"string\") {\n if (ch.changeCase == \"u\")\n fmtParts[i] = next[0].toUpperCase();\n else\n fmtParts[i] = next[0].toLowerCase();\n fmtParts[i + 1] = next.substr(1);\n }\n }\n else if (ch.changeCase) {\n gChangeCase = ch.changeCase;\n }\n }\n else if (gChangeCase == \"U\") {\n fmtParts[i] = ch.toUpperCase();\n }\n else if (gChangeCase == \"L\") {\n fmtParts[i] = ch.toLowerCase();\n }\n }\n _self.variables.__ = oldArgs;\n return fmtParts.join(\"\");\n });\n return formatted;\n };\n SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) {\n if (ch.formatFunction == \"upcase\")\n return str.toUpperCase();\n if (ch.formatFunction == \"downcase\")\n return str.toLowerCase();\n return str;\n };\n SnippetManager.prototype.resolveVariables = function (snippet, editor) {\n var result = [];\n var indentation = \"\";\n var afterNewLine = true;\n for (var i = 0; i < snippet.length; i++) {\n var ch = snippet[i];\n if (typeof ch == \"string\") {\n result.push(ch);\n if (ch == \"\\n\") {\n afterNewLine = true;\n indentation = \"\";\n }\n else if (afterNewLine) {\n indentation = /^\\t*/.exec(ch)[0];\n afterNewLine = /\\S/.test(ch);\n }\n continue;\n }\n if (!ch)\n continue;\n afterNewLine = false;\n if (ch.fmtString) {\n var j = snippet.indexOf(ch, i + 1);\n if (j == -1)\n j = snippet.length;\n ch.fmt = snippet.slice(i + 1, j);\n i = j;\n }\n if (ch.text) {\n var value = this.getVariableValue(editor, ch.text, indentation) + \"\";\n if (ch.fmtString)\n value = this.tmStrFormat(value, ch, editor);\n if (ch.formatFunction)\n value = this.tmFormatFunction(value, ch, editor);\n if (value && !ch.ifEnd) {\n result.push(value);\n gotoNext(ch);\n }\n else if (!value && ch.ifEnd) {\n gotoNext(ch.ifEnd);\n }\n }\n else if (ch.elseEnd) {\n gotoNext(ch.elseEnd);\n }\n else if (ch.tabstopId != null) {\n result.push(ch);\n }\n else if (ch.changeCase != null) {\n result.push(ch);\n }\n }\n function gotoNext(ch) {\n var i1 = snippet.indexOf(ch, i + 1);\n if (i1 != -1)\n i = i1;\n }\n return result;\n };\n SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) {\n var processedSnippet = processSnippetText.call(this, editor, snippetText);\n return processedSnippet.text;\n };\n SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var processedSnippet = processSnippetText.call(this, editor, snippetText, options);\n var range = editor.getSelectionRange();\n var end = editor.session.replace(range, processedSnippet.text);\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId);\n };\n SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var self = this;\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText, options);\n editor.forEachSelection(function () {\n self.insertSnippetForSelection(editor, snippetText, options);\n }, null, { keepOrder: true });\n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n SnippetManager.prototype.$getScope = function (editor) {\n var scope = editor.session.$mode.$id || \"\";\n scope = scope.split(\"/\").pop();\n if (scope === \"html\" || scope === \"php\") {\n if (scope === \"php\" && !editor.session.$mode.inlinePhp)\n scope = \"html\";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === \"object\") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == \"js-\")\n scope = \"javascript\";\n else if (state.substring(0, 4) == \"css-\")\n scope = \"css\";\n else if (state.substring(0, 4) == \"php-\")\n scope = \"php\";\n }\n }\n return scope;\n };\n SnippetManager.prototype.getActiveScopes = function (editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push(\"_\");\n return scopes;\n };\n SnippetManager.prototype.expandWithTab = function (editor, options) {\n var self = this;\n var result = editor.forEachSelection(function () {\n return self.expandSnippetForSelection(editor, options);\n }, null, { keepOrder: true });\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n SnippetManager.prototype.expandSnippetForSelection = function (editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length);\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [\"\"];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [\"\"];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : \"\";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : \"\";\n return s;\n }\n };\n SnippetManager.prototype.register = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n if (!snippets)\n snippets = [];\n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = \"(?:\" + src + \")\";\n return src || \"\";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != \"$\")\n re = re + \"$\";\n }\n else {\n re = re + guard;\n if (re && re[0] != \"^\")\n re = \"^\" + re;\n }\n return new RegExp(re);\n }\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || \"_\";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n if (s.prefix)\n s.tabTrigger = s.prefix;\n if (!s.content && s.body)\n s.content = Array.isArray(s.body) ? s.body.join(\"\\n\") : s.body;\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = \"\\\\b\";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger);\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger);\n }\n if (Array.isArray(snippets)) {\n snippets.forEach(addSnippet);\n }\n else {\n Object.keys(snippets).forEach(function (key) {\n addSnippet(snippets[key]);\n });\n }\n this._signal(\"registerSnippets\", { scope: scope });\n };\n SnippetManager.prototype.unregister = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope || scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope || scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n SnippetManager.prototype.parseSnippetFile = function (str) {\n str = str.replace(/\\r/g, \"\");\n var list = [], /**@type{Snippet}*/ snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n }\n catch (e) { }\n }\n if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, \"\");\n list.push(snippet);\n snippet = {};\n }\n else {\n var key = m[2], val = m[3];\n if (key == \"regex\") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n }\n else if (key == \"snippet\") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n }\n else if (key) {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n SnippetManager.prototype.getSnippetByName = function (name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n return SnippetManager;\n}());\noop.implement(SnippetManager.prototype, EventEmitter);\nvar processSnippetText = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n snippetText = snippetText.replace(/\\r/g, \"\");\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function (x) {\n if (x == \"\\n\" && !options.excludeExtraIndent)\n return x + indentString;\n if (typeof x == \"string\")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function (p, i) {\n if (typeof p != \"object\")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = \"\";\n ts.parents = {};\n }\n if (ts.indexOf(p) !== -1)\n return;\n if (p.choices && !ts.choices)\n ts.choices = p.choices;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function (t) { return typeof t === \"object\"; });\n if (isNested && !ts.value) {\n ts.value = value;\n }\n else if (value.length && (!ts.value || typeof ts.value !== \"string\")) {\n ts.value = value.join(\"\");\n }\n });\n tabstops.forEach(function (ts) { ts.length = 0; });\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == \"object\") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || { tabstopId: p.tabstopId };\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != \"object\")\n continue;\n var id = p.tabstopId;\n var ts = tabstops[id];\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p) {\n delete expanding[id];\n Object.keys(expanding).forEach(function (parentId) {\n ts.parents[parentId] = true;\n });\n }\n continue;\n }\n expanding[id] = p;\n var value = ts.value;\n if (typeof value !== \"string\")\n value = copyValue(value);\n else if (p.fmt)\n value = this.tmStrFormat(value, p, editor);\n tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p));\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = \"\";\n tokens.forEach(function (t) {\n if (typeof t === \"string\") {\n var lines = t.split(\"\\n\");\n if (lines.length > 1) {\n column = lines[lines.length - 1].length;\n row += lines.length - 1;\n }\n else\n column += t.length;\n text += t;\n }\n else if (t) {\n if (!t.start)\n t.start = { row: row, column: column };\n else\n t.end = { row: row, column: column };\n }\n });\n return {\n text: text,\n tabstops: tabstops,\n tokens: tokens\n };\n};\nvar TabstopManager = /** @class */ (function () {\n function TabstopManager(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n }\n TabstopManager.prototype.attach = function (editor) {\n this.$openTabstops = null;\n this.selectedTabstop = null;\n this.editor = editor;\n this.session = editor.session;\n this.editor.on(\"change\", this.$onChange);\n this.editor.on(\"changeSelection\", this.$onChangeSelection);\n this.editor.on(\"changeSession\", this.$onChangeSession);\n this.editor.commands.on(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n TabstopManager.prototype.detach = function () {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges.length = 0;\n this.tabstops.length = 0;\n this.selectedTabstop = null;\n this.editor.off(\"change\", this.$onChange);\n this.editor.off(\"changeSelection\", this.$onChangeSelection);\n this.editor.off(\"changeSession\", this.$onChangeSession);\n this.editor.commands.off(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.session = null;\n this.editor = null;\n };\n TabstopManager.prototype.onChange = function (delta) {\n var isRemove = delta.action[0] == \"r\";\n var selectedTabstop = this.selectedTabstop || {};\n var parents = selectedTabstop.parents || {};\n var tabstops = this.tabstops.slice();\n for (var i = 0; i < tabstops.length; i++) {\n var ts = tabstops[i];\n var active = ts == selectedTabstop || parents[ts.index];\n ts.rangeList.$bias = active ? 0 : 1;\n if (delta.action == \"remove\" && ts !== selectedTabstop) {\n var parentActive = ts.parents && ts.parents[selectedTabstop.index];\n var startIndex = ts.rangeList.pointIndex(delta.start, parentActive);\n startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1;\n var endIndex = ts.rangeList.pointIndex(delta.end, parentActive);\n endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1;\n var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex);\n for (var j = 0; j < toRemove.length; j++)\n this.removeRange(toRemove[j]);\n }\n ts.rangeList.$onChange(delta);\n }\n var session = this.session;\n if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue())\n this.detach();\n };\n TabstopManager.prototype.updateLinkedFields = function () {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked)\n return;\n this.$inChange = true;\n var session = this.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = 0; i < ts.length; i++) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var original = range.original;\n var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n TabstopManager.prototype.onAfterExec = function (e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n TabstopManager.prototype.onChangeSelection = function () {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = 0; i < this.ranges.length; i++) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n TabstopManager.prototype.onChangeSession = function () {\n this.detach();\n };\n TabstopManager.prototype.tabNext = function (dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n this.updateTabstopMarkers();\n if (index === 0) {\n this.detach();\n }\n };\n TabstopManager.prototype.selectTabstop = function (index) {\n this.$openTabstops = null;\n var ts = this.tabstops[this.index];\n if (ts)\n this.addTabstopMarkers(ts);\n this.index = index;\n ts = this.tabstops[this.index];\n if (!ts || !ts.length)\n return;\n this.selectedTabstop = ts;\n var range = ts.firstNonLinked || ts;\n if (ts.choices)\n range.cursor = range.start;\n if (!this.editor.inVirtualSelectionMode) {\n var sel = this.editor.multiSelect;\n sel.toSingleRange(range);\n for (var i = 0; i < ts.length; i++) {\n if (ts.hasLinkedRanges && ts[i].linked)\n continue;\n sel.addRange(ts[i].clone(), true);\n }\n }\n else {\n this.editor.selection.fromOrientedRange(range);\n }\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n if (this.selectedTabstop && this.selectedTabstop.choices)\n this.editor.execCommand(\"startAutocomplete\", { matches: this.selectedTabstop.choices });\n };\n TabstopManager.prototype.addTabstops = function (tabstops, start, end) {\n var useLink = this.useLink || !this.editor.getOption(\"enableMultiselect\");\n if (!this.$openTabstops)\n this.$openTabstops = [];\n if (!tabstops[0]) {\n var p = Range.fromPoints(end, end);\n moveRelative(p.start, start);\n moveRelative(p.end, start);\n tabstops[0] = [p];\n tabstops[0].index = 0;\n }\n var i = this.index;\n var arg = [i + 1, 0];\n var ranges = this.ranges;\n var snippetId = this.snippetId = (this.snippetId || 0) + 1;\n tabstops.forEach(function (ts, index) {\n var dest = this.$openTabstops[index] || ts;\n dest.snippetId = snippetId;\n for (var i = 0; i < ts.length; i++) {\n var p = ts[i];\n var range = Range.fromPoints(p.start, p.end || p.start);\n movePoint(range.start, start);\n movePoint(range.end, start);\n range.original = p;\n range.tabstop = dest;\n ranges.push(range);\n if (dest != ts)\n dest.unshift(range);\n else\n dest[i] = range;\n if (p.fmtString || (dest.firstNonLinked && useLink)) {\n range.linked = true;\n dest.hasLinkedRanges = true;\n }\n else if (!dest.firstNonLinked)\n dest.firstNonLinked = range;\n }\n if (!dest.firstNonLinked)\n dest.hasLinkedRanges = false;\n if (dest === ts) {\n arg.push(dest);\n this.$openTabstops[index] = dest;\n }\n this.addTabstopMarkers(dest);\n dest.rangeList = dest.rangeList || new RangeList();\n dest.rangeList.$bias = 0;\n dest.rangeList.addList(dest);\n }, this);\n if (arg.length > 2) {\n if (this.tabstops.length)\n arg.push(arg.splice(2, 1)[0]);\n this.tabstops.splice.apply(this.tabstops, arg);\n }\n };\n TabstopManager.prototype.addTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n if (!range.markerId)\n range.markerId = session.addMarker(range, \"ace_snippet-marker\", \"text\");\n });\n };\n TabstopManager.prototype.removeTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n session.removeMarker(range.markerId);\n range.markerId = null;\n });\n };\n TabstopManager.prototype.updateTabstopMarkers = function () {\n if (!this.selectedTabstop)\n return;\n var currentSnippetId = this.selectedTabstop.snippetId;\n if (this.selectedTabstop.index === 0) {\n currentSnippetId--;\n }\n this.tabstops.forEach(function (ts) {\n if (ts.snippetId === currentSnippetId)\n this.addTabstopMarkers(ts);\n else\n this.removeTabstopMarkers(ts);\n }, this);\n };\n TabstopManager.prototype.removeRange = function (range) {\n var i = range.tabstop.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n i = this.ranges.indexOf(range);\n if (i != -1)\n this.ranges.splice(i, 1);\n i = range.tabstop.rangeList.ranges.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n this.session.removeMarker(range.markerId);\n if (!range.tabstop.length) {\n i = this.tabstops.indexOf(range.tabstop);\n if (i != -1)\n this.tabstops.splice(i, 1);\n if (!this.tabstops.length)\n this.detach();\n }\n };\n return TabstopManager;\n}());\nTabstopManager.prototype.keyboardHandler = new HashHandler();\nTabstopManager.prototype.keyboardHandler.bindKeys({\n \"Tab\": function (editor) {\n if (exports.snippetManager && exports.snippetManager.expandWithTab(editor))\n return;\n editor.tabstopManager.tabNext(1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Shift-Tab\": function (editor) {\n editor.tabstopManager.tabNext(-1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Esc\": function (editor) {\n editor.tabstopManager.detach();\n }\n});\nvar movePoint = function (point, diff) {\n if (point.row == 0)\n point.column += diff.column;\n point.row += diff.row;\n};\nvar moveRelative = function (point, start) {\n if (point.row == start.row)\n point.column -= start.column;\n point.row -= start.row;\n};\ndom.importCssString(\"\\n.ace_snippet-marker {\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n background: rgba(194, 193, 208, 0.09);\\n border: 1px dotted rgba(211, 208, 235, 0.62);\\n position: absolute;\\n}\", \"snippets.css\", false);\nexports.snippetManager = new SnippetManager();\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.insertSnippet = function (content, options) {\n return exports.snippetManager.insertSnippet(this, content, options);\n };\n this.expandSnippet = function (options) {\n return exports.snippetManager.expandWithTab(this, options);\n };\n}).call(Editor.prototype);\n\n});\n\nace.define(\"ace/autocomplete/popup\",[\"require\",\"exports\",\"module\",\"ace/virtual_renderer\",\"ace/editor\",\"ace/range\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar Renderer = require(\"../virtual_renderer\").VirtualRenderer;\nvar Editor = require(\"../editor\").Editor;\nvar Range = require(\"../range\").Range;\nvar event = require(\"../lib/event\");\nvar lang = require(\"../lib/lang\");\nvar dom = require(\"../lib/dom\");\nvar nls = require(\"../config\").nls;\nvar userAgent = require(\"./../lib/useragent\");\nvar getAriaId = function (index) {\n return \"suggest-aria-id:\".concat(index);\n};\nvar popupAriaRole = userAgent.isSafari ? \"menu\" : \"listbox\";\nvar optionAriaRole = userAgent.isSafari ? \"menuitem\" : \"option\";\nvar ariaActiveState = userAgent.isSafari ? \"aria-current\" : \"aria-selected\";\nvar $singleLineEditor = function (el) {\n var renderer = new Renderer(el);\n renderer.$maxLines = 4;\n var editor = new Editor(renderer);\n editor.setHighlightActiveLine(false);\n editor.setShowPrintMargin(false);\n editor.renderer.setShowGutter(false);\n editor.renderer.setHighlightGutterLine(false);\n editor.$mouseHandler.$focusTimeout = 0;\n editor.$highlightTagPending = true;\n return editor;\n};\nvar AcePopup = /** @class */ (function () {\n function AcePopup(parentNode) {\n var el = dom.createElement(\"div\");\n var popup = $singleLineEditor(el);\n if (parentNode) {\n parentNode.appendChild(el);\n }\n el.style.display = \"none\";\n popup.renderer.content.style.cursor = \"default\";\n popup.renderer.setStyle(\"ace_autocomplete\");\n popup.renderer.$textLayer.element.setAttribute(\"role\", popupAriaRole);\n popup.renderer.$textLayer.element.setAttribute(\"aria-roledescription\", nls(\"autocomplete.popup.aria-roledescription\", \"Autocomplete suggestions\"));\n popup.renderer.$textLayer.element.setAttribute(\"aria-label\", nls(\"autocomplete.popup.aria-label\", \"Autocomplete suggestions\"));\n popup.renderer.textarea.setAttribute(\"aria-hidden\", \"true\");\n popup.setOption(\"displayIndentGuides\", false);\n popup.setOption(\"dragDelay\", 150);\n var noop = function () { };\n popup.focus = noop;\n popup.$isFocused = true;\n popup.renderer.$cursorLayer.restartTimer = noop;\n popup.renderer.$cursorLayer.element.style.opacity = \"0\";\n popup.renderer.$maxLines = 8;\n popup.renderer.$keepTextAreaAtCursor = false;\n popup.setHighlightActiveLine(false);\n popup.session.highlight(\"\");\n popup.session.$searchHighlight.clazz = \"ace_highlight-marker\";\n popup.on(\"mousedown\", function (e) {\n var pos = e.getDocumentPosition();\n popup.selection.moveToPosition(pos);\n selectionMarker.start.row = selectionMarker.end.row = pos.row;\n e.stop();\n });\n var lastMouseEvent;\n var hoverMarker = new Range(-1, 0, -1, Infinity);\n var selectionMarker = new Range(-1, 0, -1, Infinity);\n selectionMarker.id = popup.session.addMarker(selectionMarker, \"ace_active-line\", \"fullLine\");\n popup.setSelectOnHover = function (val) {\n if (!val) {\n hoverMarker.id = popup.session.addMarker(hoverMarker, \"ace_line-hover\", \"fullLine\");\n }\n else if (hoverMarker.id) {\n popup.session.removeMarker(hoverMarker.id);\n hoverMarker.id = null;\n }\n };\n popup.setSelectOnHover(false);\n popup.on(\"mousemove\", function (e) {\n if (!lastMouseEvent) {\n lastMouseEvent = e;\n return;\n }\n if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) {\n return;\n }\n lastMouseEvent = e;\n lastMouseEvent.scrollTop = popup.renderer.scrollTop;\n popup.isMouseOver = true;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (hoverMarker.start.row != row) {\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row);\n }\n });\n popup.renderer.on(\"beforeRender\", function () {\n if (lastMouseEvent && hoverMarker.start.row != -1) {\n lastMouseEvent.$pos = null;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row, true);\n }\n });\n popup.renderer.on(\"afterRender\", function () {\n var row = popup.getRow();\n var t = popup.renderer.$textLayer;\n var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]);\n var el = document.activeElement; // Active element is textarea of main editor\n if (selected !== popup.selectedNode && popup.selectedNode) {\n dom.removeCssClass(popup.selectedNode, \"ace_selected\");\n el.removeAttribute(\"aria-activedescendant\");\n popup.selectedNode.removeAttribute(ariaActiveState);\n popup.selectedNode.removeAttribute(\"id\");\n }\n popup.selectedNode = selected;\n if (selected) {\n dom.addCssClass(selected, \"ace_selected\");\n var ariaId = getAriaId(row);\n selected.id = ariaId;\n t.element.setAttribute(\"aria-activedescendant\", ariaId);\n el.setAttribute(\"aria-activedescendant\", ariaId);\n selected.setAttribute(\"role\", optionAriaRole);\n selected.setAttribute(\"aria-roledescription\", nls(\"autocomplete.popup.item.aria-roledescription\", \"item\"));\n selected.setAttribute(\"aria-label\", popup.getData(row).caption || popup.getData(row).value);\n selected.setAttribute(\"aria-setsize\", popup.data.length);\n selected.setAttribute(\"aria-posinset\", row + 1);\n selected.setAttribute(\"aria-describedby\", \"doc-tooltip\");\n selected.setAttribute(ariaActiveState, \"true\");\n }\n });\n var hideHoverMarker = function () { setHoverMarker(-1); };\n var setHoverMarker = function (row, suppressRedraw) {\n if (row !== hoverMarker.start.row) {\n hoverMarker.start.row = hoverMarker.end.row = row;\n if (!suppressRedraw)\n popup.session._emit(\"changeBackMarker\");\n popup._emit(\"changeHoverMarker\");\n }\n };\n popup.getHoveredRow = function () {\n return hoverMarker.start.row;\n };\n event.addListener(popup.container, \"mouseout\", function () {\n popup.isMouseOver = false;\n hideHoverMarker();\n });\n popup.on(\"hide\", hideHoverMarker);\n popup.on(\"changeSelection\", hideHoverMarker);\n popup.session.doc.getLength = function () {\n return popup.data.length;\n };\n popup.session.doc.getLine = function (i) {\n var data = popup.data[i];\n if (typeof data == \"string\")\n return data;\n return (data && data.value) || \"\";\n };\n var bgTokenizer = popup.session.bgTokenizer;\n bgTokenizer.$tokenizeRow = function (row) {\n var data = popup.data[row];\n var tokens = [];\n if (!data)\n return tokens;\n if (typeof data == \"string\")\n data = { value: data };\n var caption = data.caption || data.value || data.name;\n function addToken(value, className) {\n value && tokens.push({\n type: (data.className || \"\") + (className || \"\"),\n value: value\n });\n }\n var lower = caption.toLowerCase();\n var filterText = (popup.filterText || \"\").toLowerCase();\n var lastIndex = 0;\n var lastI = 0;\n for (var i = 0; i <= filterText.length; i++) {\n if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) {\n var sub = filterText.slice(lastI, i);\n lastI = i;\n var index = lower.indexOf(sub, lastIndex);\n if (index == -1)\n continue;\n addToken(caption.slice(lastIndex, index), \"\");\n lastIndex = index + sub.length;\n addToken(caption.slice(index, lastIndex), \"completion-highlight\");\n }\n }\n addToken(caption.slice(lastIndex, caption.length), \"\");\n tokens.push({ type: \"completion-spacer\", value: \" \" });\n if (data.meta)\n tokens.push({ type: \"completion-meta\", value: data.meta });\n if (data.message)\n tokens.push({ type: \"completion-message\", value: data.message });\n return tokens;\n };\n bgTokenizer.$updateOnChange = noop;\n bgTokenizer.start = noop;\n popup.session.$computeWidth = function () {\n return this.screenWidth = 0;\n };\n popup.isOpen = false;\n popup.isTopdown = false;\n popup.autoSelect = true;\n popup.filterText = \"\";\n popup.isMouseOver = false;\n popup.data = [];\n popup.setData = function (list, filterText) {\n popup.filterText = filterText || \"\";\n popup.setValue(lang.stringRepeat(\"\\n\", list.length), -1);\n popup.data = list || [];\n popup.setRow(0);\n };\n popup.getData = function (row) {\n return popup.data[row];\n };\n popup.getRow = function () {\n return selectionMarker.start.row;\n };\n popup.setRow = function (line) {\n line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line));\n if (selectionMarker.start.row != line) {\n popup.selection.clearSelection();\n selectionMarker.start.row = selectionMarker.end.row = line || 0;\n popup.session._emit(\"changeBackMarker\");\n popup.moveCursorTo(line || 0, 0);\n if (popup.isOpen)\n popup._signal(\"select\");\n }\n };\n popup.on(\"changeSelection\", function () {\n if (popup.isOpen)\n popup.setRow(popup.selection.lead.row);\n popup.renderer.scrollCursorIntoView();\n });\n popup.hide = function () {\n this.container.style.display = \"none\";\n popup.anchorPos = null;\n popup.anchor = null;\n if (popup.isOpen) {\n popup.isOpen = false;\n this._signal(\"hide\");\n }\n };\n popup.tryShow = function (pos, lineHeight, anchor, forceShow) {\n if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor &&\n popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left &&\n popup.anchor === anchor) {\n return true;\n }\n var el = this.container;\n var screenHeight = window.innerHeight;\n var screenWidth = window.innerWidth;\n var renderer = this.renderer;\n var maxH = renderer.$maxLines * lineHeight * 1.4;\n var dims = { top: 0, bottom: 0, left: 0 };\n var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight;\n var spaceAbove = pos.top - 3 * this.$borderSize;\n if (!anchor) {\n if (spaceAbove <= spaceBelow || spaceBelow >= maxH) {\n anchor = \"bottom\";\n }\n else {\n anchor = \"top\";\n }\n }\n if (anchor === \"top\") {\n dims.bottom = pos.top - this.$borderSize;\n dims.top = dims.bottom - maxH;\n }\n else if (anchor === \"bottom\") {\n dims.top = pos.top + lineHeight + this.$borderSize;\n dims.bottom = dims.top + maxH;\n }\n var fitsX = dims.top >= 0 && dims.bottom <= screenHeight;\n if (!forceShow && !fitsX) {\n return false;\n }\n if (!fitsX) {\n if (anchor === \"top\") {\n renderer.$maxPixelHeight = spaceAbove;\n }\n else {\n renderer.$maxPixelHeight = spaceBelow;\n }\n }\n else {\n renderer.$maxPixelHeight = null;\n }\n if (anchor === \"top\") {\n el.style.top = \"\";\n el.style.bottom = (screenHeight - dims.bottom) + \"px\";\n popup.isTopdown = false;\n }\n else {\n el.style.top = dims.top + \"px\";\n el.style.bottom = \"\";\n popup.isTopdown = true;\n }\n el.style.display = \"\";\n var left = pos.left;\n if (left + el.offsetWidth > screenWidth)\n left = screenWidth - el.offsetWidth;\n el.style.left = left + \"px\";\n el.style.right = \"\";\n if (!popup.isOpen) {\n popup.isOpen = true;\n this._signal(\"show\");\n lastMouseEvent = null;\n }\n popup.anchorPos = pos;\n popup.anchor = anchor;\n return true;\n };\n popup.show = function (pos, lineHeight, topdownOnly) {\n this.tryShow(pos, lineHeight, topdownOnly ? \"bottom\" : undefined, true);\n };\n popup.goTo = function (where) {\n var row = this.getRow();\n var max = this.session.getLength() - 1;\n switch (where) {\n case \"up\":\n row = row <= 0 ? max : row - 1;\n break;\n case \"down\":\n row = row >= max ? -1 : row + 1;\n break;\n case \"start\":\n row = 0;\n break;\n case \"end\":\n row = max;\n break;\n }\n this.setRow(row);\n };\n popup.getTextLeftOffset = function () {\n return this.$borderSize + this.renderer.$padding + this.$imageSize;\n };\n popup.$imageSize = 0;\n popup.$borderSize = 1;\n return popup;\n }\n return AcePopup;\n}());\ndom.importCssString(\"\\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #CAD6FA;\\n z-index: 1;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #3a674e;\\n}\\n.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid #abbffe;\\n margin-top: -1px;\\n background: rgba(233,233,253,0.4);\\n position: absolute;\\n z-index: 2;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid rgba(109, 150, 13, 0.8);\\n background: rgba(58, 103, 78, 0.62);\\n}\\n.ace_completion-meta {\\n opacity: 0.5;\\n margin-left: 0.9em;\\n}\\n.ace_completion-message {\\n margin-left: 0.9em;\\n color: blue;\\n}\\n.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #2d69c7;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #93ca12;\\n}\\n.ace_editor.ace_autocomplete {\\n width: 300px;\\n z-index: 200000;\\n border: 1px lightgray solid;\\n position: fixed;\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n line-height: 1.4;\\n background: #fefefe;\\n color: #111;\\n}\\n.ace_dark.ace_editor.ace_autocomplete {\\n border: 1px #484747 solid;\\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\\n line-height: 1.4;\\n background: #25282c;\\n color: #c1c1c1;\\n}\\n.ace_autocomplete .ace_text-layer {\\n width: calc(100% - 8px);\\n}\\n.ace_autocomplete .ace_line {\\n display: flex;\\n align-items: center;\\n}\\n.ace_autocomplete .ace_line > * {\\n min-width: 0;\\n flex: 0 0 auto;\\n}\\n.ace_autocomplete .ace_line .ace_ {\\n flex: 0 1 auto;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.ace_autocomplete .ace_completion-spacer {\\n flex: 1;\\n}\\n.ace_autocomplete.ace_loading:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0px;\\n height: 2px;\\n width: 8%;\\n background: blue;\\n z-index: 100;\\n animation: ace_progress 3s infinite linear;\\n animation-delay: 300ms;\\n transform: translateX(-100%) scaleX(1);\\n}\\n@keyframes ace_progress {\\n 0% { transform: translateX(-100%) scaleX(1) }\\n 50% { transform: translateX(625%) scaleX(2) } \\n 100% { transform: translateX(1500%) scaleX(3) } \\n}\\n@media (prefers-reduced-motion) {\\n .ace_autocomplete.ace_loading:after {\\n transform: translateX(625%) scaleX(2);\\n animation: none;\\n }\\n}\\n\", \"autocompletion.css\", false);\nexports.AcePopup = AcePopup;\nexports.$singleLineEditor = $singleLineEditor;\nexports.getAriaId = getAriaId;\n\n});\n\nace.define(\"ace/autocomplete/inline_screenreader\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar AceInlineScreenReader = /** @class */ (function () {\n function AceInlineScreenReader(editor) {\n this.editor = editor;\n this.screenReaderDiv = document.createElement(\"div\");\n this.screenReaderDiv.classList.add(\"ace_screenreader-only\");\n this.editor.container.appendChild(this.screenReaderDiv);\n }\n AceInlineScreenReader.prototype.setScreenReaderContent = function (content) {\n if (!this.popup && this.editor.completer && /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup) {\n this.popup = /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup;\n this.popup.renderer.on(\"afterRender\", function () {\n var row = this.popup.getRow();\n var t = this.popup.renderer.$textLayer;\n var selected = t.element.childNodes[row - t.config.firstRow];\n if (selected) {\n var idString = \"doc-tooltip \";\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n idString += \"ace-inline-screenreader-line-\".concat(lineIndex, \" \");\n }\n selected.setAttribute(\"aria-describedby\", idString);\n }\n }.bind(this));\n }\n while (this.screenReaderDiv.firstChild) {\n this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild);\n }\n this._lines = content.split(/\\r\\n|\\r|\\n/);\n var codeElement = this.createCodeBlock();\n this.screenReaderDiv.appendChild(codeElement);\n };\n AceInlineScreenReader.prototype.destroy = function () {\n this.screenReaderDiv.remove();\n };\n AceInlineScreenReader.prototype.createCodeBlock = function () {\n var container = document.createElement(\"pre\");\n container.setAttribute(\"id\", \"ace-inline-screenreader\");\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n var codeElement = document.createElement(\"code\");\n codeElement.setAttribute(\"id\", \"ace-inline-screenreader-line-\".concat(lineIndex));\n var line = document.createTextNode(this._lines[lineIndex]);\n codeElement.appendChild(line);\n container.appendChild(codeElement);\n }\n return container;\n };\n return AceInlineScreenReader;\n}());\nexports.AceInlineScreenReader = AceInlineScreenReader;\n\n});\n\nace.define(\"ace/autocomplete/inline\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete/inline_screenreader\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar AceInlineScreenReader = require(\"./inline_screenreader\").AceInlineScreenReader;\nvar AceInline = /** @class */ (function () {\n function AceInline() {\n this.editor = null;\n }\n AceInline.prototype.show = function (editor, completion, prefix) {\n prefix = prefix || \"\";\n if (editor && this.editor && this.editor !== editor) {\n this.hide();\n this.editor = null;\n this.inlineScreenReader = null;\n }\n if (!editor || !completion) {\n return false;\n }\n if (!this.inlineScreenReader) {\n this.inlineScreenReader = new AceInlineScreenReader(editor);\n }\n var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value;\n if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) {\n return false;\n }\n this.editor = editor;\n this.inlineScreenReader.setScreenReaderContent(displayText);\n displayText = displayText.slice(prefix.length);\n if (displayText === \"\") {\n editor.removeGhostText();\n }\n else {\n editor.setGhostText(displayText);\n }\n return true;\n };\n AceInline.prototype.isOpen = function () {\n if (!this.editor) {\n return false;\n }\n return !!this.editor.renderer.$ghostText;\n };\n AceInline.prototype.hide = function () {\n if (!this.editor) {\n return false;\n }\n this.editor.removeGhostText();\n return true;\n };\n AceInline.prototype.destroy = function () {\n this.hide();\n this.editor = null;\n if (this.inlineScreenReader) {\n this.inlineScreenReader.destroy();\n this.inlineScreenReader = null;\n }\n };\n return AceInline;\n}());\nexports.AceInline = AceInline;\n\n});\n\nace.define(\"ace/autocomplete/util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.parForEach = function (array, fn, callback) {\n var completed = 0;\n var arLength = array.length;\n if (arLength === 0)\n callback();\n for (var i = 0; i < arLength; i++) {\n fn(array[i], function (result, err) {\n completed++;\n if (completed === arLength)\n callback(result, err);\n });\n }\n};\nvar ID_REGEX = /[a-zA-Z_0-9\\$\\-\\u00A2-\\u2000\\u2070-\\uFFFF]/;\nexports.retrievePrecedingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos - 1; i >= 0; i--) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf.reverse().join(\"\");\n};\nexports.retrieveFollowingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos; i < text.length; i++) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf;\n};\nexports.getCompletionPrefix = function (editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var prefix;\n editor.completers.forEach(function (completer) {\n if (completer.identifierRegexps) {\n completer.identifierRegexps.forEach(function (identifierRegex) {\n if (!prefix && identifierRegex)\n prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex);\n }.bind(this));\n }\n }.bind(this));\n return prefix || this.retrievePrecedingIdentifier(line, pos.column);\n};\nexports.triggerAutocomplete = function (editor, previousChar) {\n var previousChar = previousChar == null\n ? editor.session.getPrecedingCharacter()\n : previousChar;\n return editor.completers.some(function (completer) {\n if (completer.triggerCharacters && Array.isArray(completer.triggerCharacters)) {\n return completer.triggerCharacters.includes(previousChar);\n }\n });\n};\n\n});\n\nace.define(\"ace/autocomplete\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/autocomplete/popup\",\"ace/autocomplete/inline\",\"ace/autocomplete/popup\",\"ace/autocomplete/util\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/snippets\",\"ace/config\",\"ace/lib/event\",\"ace/lib/scroll\"], function(require, exports, module){\"use strict\";\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar AcePopup = require(\"./autocomplete/popup\").AcePopup;\nvar AceInline = require(\"./autocomplete/inline\").AceInline;\nvar getAriaId = require(\"./autocomplete/popup\").getAriaId;\nvar util = require(\"./autocomplete/util\");\nvar lang = require(\"./lib/lang\");\nvar dom = require(\"./lib/dom\");\nvar snippetManager = require(\"./snippets\").snippetManager;\nvar config = require(\"./config\");\nvar event = require(\"./lib/event\");\nvar preventParentScroll = require(\"./lib/scroll\").preventParentScroll;\nvar destroyCompleter = function (e, editor) {\n editor.completer && editor.completer.destroy();\n};\nvar Autocomplete = /** @class */ (function () {\n function Autocomplete() {\n this.autoInsert = false;\n this.autoSelect = true;\n this.autoShown = false;\n this.exactMatch = false;\n this.inlineEnabled = false;\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys(this.commands);\n this.parentNode = null;\n this.setSelectOnHover = false;\n this.hasSeen = new Set();\n this.showLoadingState = false;\n this.stickySelectionDelay = 500;\n this.blurListener = this.blurListener.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.mousedownListener = this.mousedownListener.bind(this);\n this.mousewheelListener = this.mousewheelListener.bind(this);\n this.onLayoutChange = this.onLayoutChange.bind(this);\n this.changeTimer = lang.delayedCall(function () {\n this.updateCompletions(true);\n }.bind(this));\n this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50);\n this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50);\n this.stickySelectionTimer = lang.delayedCall(function () {\n this.stickySelection = true;\n }.bind(this), this.stickySelectionDelay);\n this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () {\n var initialPosition = this.completionProvider && this.completionProvider.initialPosition;\n if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0)\n return;\n this.completions = new FilteredList(Autocomplete.completionsForLoading);\n this.openPopup(this.editor, initialPosition.prefix, false);\n this.popup.renderer.setStyle(\"ace_loading\", true);\n }.bind(this), this.stickySelectionDelay);\n }\n Object.defineProperty(Autocomplete, \"completionsForLoading\", {\n get: function () {\n return [{\n caption: config.nls(\"autocomplete.loading\", \"Loading...\"),\n value: \"\"\n }];\n },\n enumerable: false,\n configurable: true\n });\n Autocomplete.prototype.$init = function () {\n this.popup = new AcePopup(this.parentNode || document.body || document.documentElement);\n this.popup.on(\"click\", function (e) {\n this.insertMatch();\n e.stop();\n }.bind(this));\n this.popup.focus = this.editor.focus.bind(this.editor);\n this.popup.on(\"show\", this.$onPopupShow.bind(this));\n this.popup.on(\"hide\", this.$onHidePopup.bind(this));\n this.popup.on(\"select\", this.$onPopupChange.bind(this));\n event.addListener(this.popup.container, \"mouseout\", this.mouseOutListener.bind(this));\n this.popup.on(\"changeHoverMarker\", this.tooltipTimer.bind(null, null));\n this.popup.renderer.on(\"afterRender\", this.$onPopupRender.bind(this));\n return this.popup;\n };\n Autocomplete.prototype.$initInline = function () {\n if (!this.inlineEnabled || this.inlineRenderer)\n return;\n this.inlineRenderer = new AceInline();\n return this.inlineRenderer;\n };\n Autocomplete.prototype.getPopup = function () {\n return this.popup || this.$init();\n };\n Autocomplete.prototype.$onHidePopup = function () {\n if (this.inlineRenderer) {\n this.inlineRenderer.hide();\n }\n this.hideDocTooltip();\n this.stickySelectionTimer.cancel();\n this.popupTimer.cancel();\n this.stickySelection = false;\n };\n Autocomplete.prototype.$seen = function (completion) {\n if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === \"function\") {\n completion.completer.onSeen(this.editor, completion);\n this.hasSeen.add(completion);\n }\n };\n Autocomplete.prototype.$onPopupChange = function (hide) {\n if (this.inlineRenderer && this.inlineEnabled) {\n var completion = hide ? null : this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n if (this.popup.isMouseOver && this.setSelectOnHover) {\n this.tooltipTimer.call(null, null);\n return;\n }\n this.popupTimer.schedule();\n this.tooltipTimer.schedule();\n }\n else {\n this.popupTimer.call(null, null);\n this.tooltipTimer.call(null, null);\n }\n };\n Autocomplete.prototype.$updateGhostText = function (completion) {\n var row = this.base.row;\n var column = this.base.column;\n var cursorColumn = this.editor.getCursorPosition().column;\n var prefix = this.editor.session.getLine(row).slice(column, cursorColumn);\n if (!this.inlineRenderer.show(this.editor, completion, prefix)) {\n this.inlineRenderer.hide();\n }\n else {\n this.$seen(completion);\n }\n };\n Autocomplete.prototype.$onPopupRender = function () {\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) {\n for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) {\n var completion = this.popup.getData(i);\n if (completion && (!inlineEnabled || completion.hideInlinePreview)) {\n this.$seen(completion);\n }\n }\n }\n };\n Autocomplete.prototype.$onPopupShow = function (hide) {\n this.$onPopupChange(hide);\n this.stickySelection = false;\n if (this.stickySelectionDelay >= 0)\n this.stickySelectionTimer.schedule(this.stickySelectionDelay);\n };\n Autocomplete.prototype.observeLayoutChanges = function () {\n if (this.$elements || !this.editor)\n return;\n window.addEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.addEventListener(\"wheel\", this.mousewheelListener);\n var el = this.editor.container.parentNode;\n var elements = [];\n while (el) {\n elements.push(el);\n el.addEventListener(\"scroll\", this.onLayoutChange, { passive: true });\n el = el.parentNode;\n }\n this.$elements = elements;\n };\n Autocomplete.prototype.unObserveLayoutChanges = function () {\n var _this = this;\n window.removeEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.removeEventListener(\"wheel\", this.mousewheelListener);\n this.$elements && this.$elements.forEach(function (el) {\n el.removeEventListener(\"scroll\", _this.onLayoutChange, { passive: true });\n });\n this.$elements = null;\n };\n Autocomplete.prototype.onLayoutChange = function () {\n if (!this.popup.isOpen)\n return this.unObserveLayoutChanges();\n this.$updatePopupPosition();\n this.updateDocTooltip();\n };\n Autocomplete.prototype.$updatePopupPosition = function () {\n var editor = this.editor;\n var renderer = editor.renderer;\n var lineHeight = renderer.layerConfig.lineHeight;\n var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);\n pos.left -= this.popup.getTextLeftOffset();\n var rect = editor.container.getBoundingClientRect();\n pos.top += rect.top - renderer.layerConfig.offset;\n pos.left += rect.left - editor.renderer.scrollLeft;\n pos.left += renderer.gutterWidth;\n var posGhostText = {\n top: pos.top,\n left: pos.left\n };\n if (renderer.$ghostText && renderer.$ghostTextWidget) {\n if (this.base.row === renderer.$ghostText.position.row) {\n posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight;\n }\n }\n var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight;\n var lowestPosition = editorContainerBottom < posGhostText.top ?\n { top: editorContainerBottom, left: posGhostText.left } :\n posGhostText;\n if (this.popup.tryShow(lowestPosition, lineHeight, \"bottom\")) {\n return;\n }\n if (this.popup.tryShow(pos, lineHeight, \"top\")) {\n return;\n }\n this.popup.show(pos, lineHeight);\n };\n Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) {\n this.$firstOpenTimer.cancel();\n if (!this.popup)\n this.$init();\n if (this.inlineEnabled && !this.inlineRenderer)\n this.$initInline();\n this.popup.autoSelect = this.autoSelect;\n this.popup.setSelectOnHover(this.setSelectOnHover);\n var oldRow = this.popup.getRow();\n var previousSelectedItem = this.popup.data[oldRow];\n this.popup.setData(this.completions.filtered, this.completions.filterText);\n if (this.editor.textInput.setAriaOptions) {\n this.editor.textInput.setAriaOptions({\n activeDescendant: getAriaId(this.popup.getRow()),\n inline: this.inlineEnabled\n });\n }\n editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n var newRow;\n if (this.stickySelection)\n newRow = this.popup.data.indexOf(previousSelectedItem);\n if (!newRow || newRow === -1)\n newRow = 0;\n this.popup.setRow(this.autoSelect ? newRow : -1);\n if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow])\n this.$onPopupChange();\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (newRow === oldRow && inlineEnabled) {\n var completion = this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n }\n if (!keepPopupPosition) {\n this.popup.setTheme(editor.getTheme());\n this.popup.setFontSize(editor.getFontSize());\n this.$updatePopupPosition();\n if (this.tooltipNode) {\n this.updateDocTooltip();\n }\n }\n this.changeTimer.cancel();\n this.observeLayoutChanges();\n };\n Autocomplete.prototype.detach = function () {\n if (this.editor) {\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.off(\"changeSelection\", this.changeListener);\n this.editor.off(\"blur\", this.blurListener);\n this.editor.off(\"mousedown\", this.mousedownListener);\n this.editor.off(\"mousewheel\", this.mousewheelListener);\n }\n this.$firstOpenTimer.cancel();\n this.changeTimer.cancel();\n this.hideDocTooltip();\n if (this.completionProvider) {\n this.completionProvider.detach();\n }\n if (this.popup && this.popup.isOpen)\n this.popup.hide();\n if (this.popup && this.popup.renderer) {\n this.popup.renderer.off(\"afterRender\", this.$onPopupRender);\n }\n if (this.base)\n this.base.detach();\n this.activated = false;\n this.completionProvider = this.completions = this.base = null;\n this.unObserveLayoutChanges();\n };\n Autocomplete.prototype.changeListener = function (e) {\n var cursor = this.editor.selection.lead;\n if (cursor.row != this.base.row || cursor.column < this.base.column) {\n this.detach();\n }\n if (this.activated)\n this.changeTimer.schedule();\n else\n this.detach();\n };\n Autocomplete.prototype.blurListener = function (e) {\n var el = document.activeElement;\n var text = this.editor.textInput.getElement();\n var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget);\n var container = this.popup && this.popup.container;\n if (el != text && el.parentNode != container && !fromTooltip\n && el != this.tooltipNode && e.relatedTarget != text) {\n this.detach();\n }\n };\n Autocomplete.prototype.mousedownListener = function (e) {\n this.detach();\n };\n Autocomplete.prototype.mousewheelListener = function (e) {\n if (this.popup && !this.popup.isMouseOver)\n this.detach();\n };\n Autocomplete.prototype.mouseOutListener = function (e) {\n if (this.popup.isOpen)\n this.$updatePopupPosition();\n };\n Autocomplete.prototype.goTo = function (where) {\n this.popup.goTo(where);\n };\n Autocomplete.prototype.insertMatch = function (data, options) {\n if (!data)\n data = this.popup.getData(this.popup.getRow());\n if (!data)\n return false;\n if (data.value === \"\") // Explicitly given nothing to insert, e.g. \"No suggestion state\"\n return this.detach();\n var completions = this.completions;\n var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options);\n if (this.completions == completions)\n this.detach();\n return result;\n };\n Autocomplete.prototype.showPopup = function (editor, options) {\n if (this.editor)\n this.detach();\n this.activated = true;\n this.editor = editor;\n if (editor.completer != this) {\n if (editor.completer)\n editor.completer.detach();\n editor.completer = this;\n }\n editor.on(\"changeSelection\", this.changeListener);\n editor.on(\"blur\", this.blurListener);\n editor.on(\"mousedown\", this.mousedownListener);\n editor.on(\"mousewheel\", this.mousewheelListener);\n this.updateCompletions(false, options);\n };\n Autocomplete.prototype.getCompletionProvider = function (initialPosition) {\n if (!this.completionProvider)\n this.completionProvider = new CompletionProvider(initialPosition);\n return this.completionProvider;\n };\n Autocomplete.prototype.gatherCompletions = function (editor, callback) {\n return this.getCompletionProvider().gatherCompletions(editor, callback);\n };\n Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) {\n if (keepPopupPosition && this.base && this.completions) {\n var pos = this.editor.getCursorPosition();\n var prefix = this.editor.session.getTextRange({ start: this.base, end: pos });\n if (prefix == this.completions.filterText)\n return;\n this.completions.setFilter(prefix);\n if (!this.completions.filtered.length)\n return this.detach();\n if (this.completions.filtered.length == 1\n && this.completions.filtered[0].value == prefix\n && !this.completions.filtered[0].snippet)\n return this.detach();\n this.openPopup(this.editor, prefix, keepPopupPosition);\n return;\n }\n if (options && options.matches) {\n var pos = this.editor.getSelectionRange().start;\n this.base = this.editor.session.doc.createAnchor(pos.row, pos.column);\n this.base.$insertRight = true;\n this.completions = new FilteredList(options.matches);\n this.getCompletionProvider().completions = this.completions;\n return this.openPopup(this.editor, \"\", keepPopupPosition);\n }\n var session = this.editor.getSession();\n var pos = this.editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(this.editor);\n this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);\n this.base.$insertRight = true;\n var completionOptions = {\n exactMatch: this.exactMatch,\n ignoreCaption: this.ignoreCaption\n };\n this.getCompletionProvider({\n prefix: prefix,\n pos: pos\n }).provideCompletions(this.editor, completionOptions, \n function (err, completions, finished) {\n var filtered = completions.filtered;\n var prefix = util.getCompletionPrefix(this.editor);\n this.$firstOpenTimer.cancel();\n if (finished) {\n if (!filtered.length) {\n var emptyMessage = !this.autoShown && this.emptyMessage;\n if (typeof emptyMessage == \"function\")\n emptyMessage = this.emptyMessage(prefix);\n if (emptyMessage) {\n var completionsForEmpty = [{\n caption: emptyMessage,\n value: \"\"\n }\n ];\n this.completions = new FilteredList(completionsForEmpty);\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_loading\", false);\n this.popup.renderer.setStyle(\"ace_empty-message\", true);\n return;\n }\n return this.detach();\n }\n if (filtered.length == 1 && filtered[0].value == prefix\n && !filtered[0].snippet)\n return this.detach();\n if (this.autoInsert && !this.autoShown && filtered.length == 1)\n return this.insertMatch(filtered[0]);\n }\n this.completions = !finished && this.showLoadingState ?\n new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) :\n completions;\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_empty-message\", false);\n this.popup.renderer.setStyle(\"ace_loading\", !finished);\n }.bind(this));\n if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) {\n this.$firstOpenTimer.delay(this.stickySelectionDelay / 2);\n }\n };\n Autocomplete.prototype.cancelContextMenu = function () {\n this.editor.$mouseHandler.cancelContextMenu();\n };\n Autocomplete.prototype.updateDocTooltip = function () {\n var popup = this.popup;\n var all = this.completions.filtered;\n var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]);\n var doc = null;\n if (!selected || !this.editor || !this.popup.isOpen)\n return this.hideDocTooltip();\n var completersLength = this.editor.completers.length;\n for (var i = 0; i < completersLength; i++) {\n var completer = this.editor.completers[i];\n if (completer.getDocTooltip && selected.completerId === completer.id) {\n doc = completer.getDocTooltip(selected);\n break;\n }\n }\n if (!doc && typeof selected != \"string\")\n doc = selected;\n if (typeof doc == \"string\")\n doc = { docText: doc };\n if (!doc || !(doc.docHTML || doc.docText))\n return this.hideDocTooltip();\n this.showDocTooltip(doc);\n };\n Autocomplete.prototype.showDocTooltip = function (item) {\n if (!this.tooltipNode) {\n this.tooltipNode = dom.createElement(\"div\");\n this.tooltipNode.style.margin = \"0\";\n this.tooltipNode.style.pointerEvents = \"auto\";\n this.tooltipNode.style.overscrollBehavior = \"contain\";\n this.tooltipNode.tabIndex = -1;\n this.tooltipNode.onblur = this.blurListener.bind(this);\n this.tooltipNode.onclick = this.onTooltipClick.bind(this);\n this.tooltipNode.id = \"doc-tooltip\";\n this.tooltipNode.setAttribute(\"role\", \"tooltip\");\n this.tooltipNode.addEventListener(\"wheel\", preventParentScroll);\n }\n var theme = this.editor.renderer.theme;\n this.tooltipNode.className = \"ace_tooltip ace_doc-tooltip \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n var tooltipNode = this.tooltipNode;\n if (item.docHTML) {\n tooltipNode.innerHTML = item.docHTML;\n }\n else if (item.docText) {\n tooltipNode.textContent = item.docText;\n }\n if (!tooltipNode.parentNode)\n this.popup.container.appendChild(this.tooltipNode);\n var popup = this.popup;\n var rect = popup.container.getBoundingClientRect();\n tooltipNode.style.top = popup.container.style.top;\n tooltipNode.style.bottom = popup.container.style.bottom;\n tooltipNode.style.display = \"block\";\n if (window.innerWidth - rect.right < 320) {\n if (rect.left < 320) {\n if (popup.isTopdown) {\n tooltipNode.style.top = rect.bottom + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n else {\n tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n }\n else {\n tooltipNode.style.right = window.innerWidth - rect.left + \"px\";\n tooltipNode.style.left = \"\";\n }\n }\n else {\n tooltipNode.style.left = (rect.right + 1) + \"px\";\n tooltipNode.style.right = \"\";\n }\n };\n Autocomplete.prototype.hideDocTooltip = function () {\n this.tooltipTimer.cancel();\n if (!this.tooltipNode)\n return;\n var el = this.tooltipNode;\n if (!this.editor.isFocused() && document.activeElement == el)\n this.editor.focus();\n this.tooltipNode = null;\n if (el.parentNode)\n el.parentNode.removeChild(el);\n };\n Autocomplete.prototype.onTooltipClick = function (e) {\n var a = e.target;\n while (a && a != this.tooltipNode) {\n if (a.nodeName == \"A\" && a.href) {\n a.rel = \"noreferrer\";\n a.target = \"_blank\";\n break;\n }\n a = a.parentNode;\n }\n };\n Autocomplete.prototype.destroy = function () {\n this.detach();\n if (this.popup) {\n this.popup.destroy();\n var el = this.popup.container;\n if (el && el.parentNode)\n el.parentNode.removeChild(el);\n }\n if (this.editor && this.editor.completer == this) {\n this.editor.off(\"destroy\", destroyCompleter);\n this.editor.completer = null;\n }\n this.inlineRenderer = this.popup = this.editor = null;\n };\n return Autocomplete;\n}());\nAutocomplete.prototype.commands = {\n \"Up\": function (editor) { editor.completer.goTo(\"up\"); },\n \"Down\": function (editor) { editor.completer.goTo(\"down\"); },\n \"Ctrl-Up|Ctrl-Home\": function (editor) { editor.completer.goTo(\"start\"); },\n \"Ctrl-Down|Ctrl-End\": function (editor) { editor.completer.goTo(\"end\"); },\n \"Esc\": function (editor) { editor.completer.detach(); },\n \"Return\": function (editor) { return editor.completer.insertMatch(); },\n \"Shift-Return\": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); },\n \"Tab\": function (editor) {\n var result = editor.completer.insertMatch();\n if (!result && !editor.tabstopManager)\n editor.completer.goTo(\"down\");\n else\n return result;\n },\n \"Backspace\": function (editor) {\n editor.execCommand(\"backspace\");\n var prefix = util.getCompletionPrefix(editor);\n if (!prefix && editor.completer)\n editor.completer.detach();\n },\n \"PageUp\": function (editor) { editor.completer.popup.gotoPageUp(); },\n \"PageDown\": function (editor) { editor.completer.popup.gotoPageDown(); }\n};\nAutocomplete.for = function (editor) {\n if (editor.completer instanceof Autocomplete) {\n return editor.completer;\n }\n if (editor.completer) {\n editor.completer.destroy();\n editor.completer = null;\n }\n if (config.get(\"sharedPopups\")) {\n if (!Autocomplete[\"$sharedInstance\"])\n Autocomplete[\"$sharedInstance\"] = new Autocomplete();\n editor.completer = Autocomplete[\"$sharedInstance\"];\n }\n else {\n editor.completer = new Autocomplete();\n editor.once(\"destroy\", destroyCompleter);\n }\n return editor.completer;\n};\nAutocomplete.startCommand = {\n name: \"startAutocomplete\",\n exec: function (editor, options) {\n var completer = Autocomplete.for(editor);\n completer.autoInsert = false;\n completer.autoSelect = true;\n completer.autoShown = false;\n completer.showPopup(editor, options);\n completer.cancelContextMenu();\n },\n bindKey: \"Ctrl-Space|Ctrl-Shift-Space|Alt-Space\"\n};\nvar CompletionProvider = /** @class */ (function () {\n function CompletionProvider(initialPosition) {\n this.initialPosition = initialPosition;\n this.active = true;\n }\n CompletionProvider.prototype.insertByIndex = function (editor, index, options) {\n if (!this.completions || !this.completions.filtered) {\n return false;\n }\n return this.insertMatch(editor, this.completions.filtered[index], options);\n };\n CompletionProvider.prototype.insertMatch = function (editor, data, options) {\n if (!data)\n return false;\n editor.startOperation({ command: { name: \"insertMatch\" } });\n if (data.completer && data.completer.insertMatch) {\n data.completer.insertMatch(editor, data);\n }\n else {\n if (!this.completions)\n return false;\n var replaceBefore = this.completions.filterText.length;\n var replaceAfter = 0;\n if (data.range && data.range.start.row === data.range.end.row) {\n replaceBefore -= this.initialPosition.prefix.length;\n replaceBefore += this.initialPosition.pos.column - data.range.start.column;\n replaceAfter += data.range.end.column - this.initialPosition.pos.column;\n }\n if (replaceBefore || replaceAfter) {\n var ranges;\n if (editor.selection.getAllRanges) {\n ranges = editor.selection.getAllRanges();\n }\n else {\n ranges = [editor.getSelectionRange()];\n }\n for (var i = 0, range; range = ranges[i]; i++) {\n range.start.column -= replaceBefore;\n range.end.column += replaceAfter;\n editor.session.remove(range);\n }\n }\n if (data.snippet) {\n snippetManager.insertSnippet(editor, data.snippet);\n }\n else {\n this.$insertString(editor, data);\n }\n if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == \"function\") {\n data.completer.onInsert(editor, data);\n }\n if (data.command && data.command === \"startAutocomplete\") {\n editor.execCommand(data.command);\n }\n }\n editor.endOperation();\n return true;\n };\n CompletionProvider.prototype.$insertString = function (editor, data) {\n var text = data.value || data;\n editor.execCommand(\"insertstring\", text);\n };\n CompletionProvider.prototype.gatherCompletions = function (editor, callback) {\n var session = editor.getSession();\n var pos = editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(editor);\n var matches = [];\n this.completers = editor.completers;\n var total = editor.completers.length;\n editor.completers.forEach(function (completer, i) {\n completer.getCompletions(editor, session, pos, prefix, function (err, results) {\n if (completer.hideInlinePreview)\n results = results.map(function (result) {\n return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview });\n });\n if (!err && results)\n matches = matches.concat(results);\n callback(null, {\n prefix: util.getCompletionPrefix(editor),\n matches: matches,\n finished: (--total === 0)\n });\n });\n });\n return true;\n };\n CompletionProvider.prototype.provideCompletions = function (editor, options, callback) {\n var processResults = function (results) {\n var prefix = results.prefix;\n var matches = results.matches;\n this.completions = new FilteredList(matches);\n if (options.exactMatch)\n this.completions.exactMatch = true;\n if (options.ignoreCaption)\n this.completions.ignoreCaption = true;\n this.completions.setFilter(prefix);\n if (results.finished || this.completions.filtered.length)\n callback(null, this.completions, results.finished);\n }.bind(this);\n var isImmediate = true;\n var immediateResults = null;\n this.gatherCompletions(editor, function (err, results) {\n if (!this.active) {\n return;\n }\n if (err) {\n callback(err, [], true);\n this.detach();\n }\n var prefix = results.prefix;\n if (prefix.indexOf(results.prefix) !== 0)\n return;\n if (isImmediate) {\n immediateResults = results;\n return;\n }\n processResults(results);\n }.bind(this));\n isImmediate = false;\n if (immediateResults) {\n var results = immediateResults;\n immediateResults = null;\n processResults(results);\n }\n };\n CompletionProvider.prototype.detach = function () {\n this.active = false;\n this.completers && this.completers.forEach(function (completer) {\n if (typeof completer.cancel === \"function\") {\n completer.cancel();\n }\n });\n };\n return CompletionProvider;\n}());\nvar FilteredList = /** @class */ (function () {\n function FilteredList(array, filterText) {\n this.all = array;\n this.filtered = array;\n this.filterText = filterText || \"\";\n this.exactMatch = false;\n this.ignoreCaption = false;\n }\n FilteredList.prototype.setFilter = function (str) {\n if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)\n var matches = this.filtered;\n else\n var matches = this.all;\n this.filterText = str;\n matches = this.filterCompletions(matches, this.filterText);\n matches = matches.sort(function (a, b) {\n return b.exactMatch - a.exactMatch || b.$score - a.$score\n || (a.caption || a.value).localeCompare(b.caption || b.value);\n });\n var prev = null;\n matches = matches.filter(function (item) {\n var caption = item.snippet || item.caption || item.value;\n if (caption === prev)\n return false;\n prev = caption;\n return true;\n });\n this.filtered = matches;\n };\n FilteredList.prototype.filterCompletions = function (items, needle) {\n var results = [];\n var upper = needle.toUpperCase();\n var lower = needle.toLowerCase();\n loop: for (var i = 0, item; item = items[i]; i++) {\n var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet;\n if (!caption)\n continue;\n var lastIndex = -1;\n var matchMask = 0;\n var penalty = 0;\n var index, distance;\n if (this.exactMatch) {\n if (needle !== caption.substr(0, needle.length))\n continue loop;\n }\n else {\n var fullMatchIndex = caption.toLowerCase().indexOf(lower);\n if (fullMatchIndex > -1) {\n penalty = fullMatchIndex;\n }\n else {\n for (var j = 0; j < needle.length; j++) {\n var i1 = caption.indexOf(lower[j], lastIndex + 1);\n var i2 = caption.indexOf(upper[j], lastIndex + 1);\n index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;\n if (index < 0)\n continue loop;\n distance = index - lastIndex - 1;\n if (distance > 0) {\n if (lastIndex === -1)\n penalty += 10;\n penalty += distance;\n matchMask = matchMask | (1 << j);\n }\n lastIndex = index;\n }\n }\n }\n item.matchMask = matchMask;\n item.exactMatch = penalty ? 0 : 1;\n item.$score = (item.score || 0) - penalty;\n results.push(item);\n }\n return results;\n };\n return FilteredList;\n}());\nexports.Autocomplete = Autocomplete;\nexports.CompletionProvider = CompletionProvider;\nexports.FilteredList = FilteredList;\n\n});\n\nace.define(\"ace/autocomplete/text_completer\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){var Range = require(\"../range\").Range;\nvar splitRegex = /[^a-zA-Z_0-9\\$\\-\\u00C0-\\u1FFF\\u2C00-\\uD7FF\\w]+/;\nfunction getWordIndex(doc, pos) {\n var textBefore = doc.getTextRange(Range.fromPoints({\n row: 0,\n column: 0\n }, pos));\n return textBefore.split(splitRegex).length - 1;\n}\nfunction wordDistance(doc, pos) {\n var prefixPos = getWordIndex(doc, pos);\n var words = doc.getValue().split(splitRegex);\n var wordScores = Object.create(null);\n var currentWord = words[prefixPos];\n words.forEach(function (word, idx) {\n if (!word || word === currentWord)\n return;\n var distance = Math.abs(prefixPos - idx);\n var score = words.length - distance;\n if (wordScores[word]) {\n wordScores[word] = Math.max(score, wordScores[word]);\n }\n else {\n wordScores[word] = score;\n }\n });\n return wordScores;\n}\nexports.getCompletions = function (editor, session, pos, prefix, callback) {\n var wordScore = wordDistance(session, pos);\n var wordList = Object.keys(wordScore);\n callback(null, wordList.map(function (word) {\n return {\n caption: word,\n value: word,\n score: wordScore[word],\n meta: \"local\"\n };\n }));\n};\n\n});\n\nace.define(\"ace/ext/language_tools\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete\",\"ace/config\",\"ace/lib/lang\",\"ace/autocomplete/util\",\"ace/autocomplete/text_completer\",\"ace/editor\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar Autocomplete = require(\"../autocomplete\").Autocomplete;\nvar config = require(\"../config\");\nvar lang = require(\"../lib/lang\");\nvar util = require(\"../autocomplete/util\");\nvar textCompleter = require(\"../autocomplete/text_completer\");\nvar keyWordCompleter = {\n getCompletions: function (editor, session, pos, prefix, callback) {\n if (session.$mode.completer) {\n return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback);\n }\n var state = editor.session.getState(pos.row);\n var completions = session.$mode.getCompletions(state, session, pos, prefix);\n completions = completions.map(function (el) {\n el.completerId = keyWordCompleter.id;\n return el;\n });\n callback(null, completions);\n },\n id: \"keywordCompleter\"\n};\nvar transformSnippetTooltip = function (str) {\n var record = {};\n return str.replace(/\\${(\\d+)(:(.*?))?}/g, function (_, p1, p2, p3) {\n return (record[p1] = p3 || '');\n }).replace(/\\$(\\d+?)/g, function (_, p1) {\n return record[p1];\n });\n};\nvar snippetCompleter = {\n getCompletions: function (editor, session, pos, prefix, callback) {\n var scopes = [];\n var token = session.getTokenAt(pos.row, pos.column);\n if (token && token.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\\.xml$/))\n scopes.push('html-tag');\n else\n scopes = snippetManager.getActiveScopes(editor);\n var snippetMap = snippetManager.snippetMap;\n var completions = [];\n scopes.forEach(function (scope) {\n var snippets = snippetMap[scope] || [];\n for (var i = snippets.length; i--;) {\n var s = snippets[i];\n var caption = s.name || s.tabTrigger;\n if (!caption)\n continue;\n completions.push({\n caption: caption,\n snippet: s.content,\n meta: s.tabTrigger && !s.name ? s.tabTrigger + \"\\u21E5 \" : \"snippet\",\n completerId: snippetCompleter.id\n });\n }\n }, this);\n callback(null, completions);\n },\n getDocTooltip: function (item) {\n if (item.snippet && !item.docHTML) {\n item.docHTML = [\n \"\", lang.escapeHTML(item.caption), \"\", \"
\",\n lang.escapeHTML(transformSnippetTooltip(item.snippet))\n ].join(\"\");\n }\n },\n id: \"snippetCompleter\"\n};\nvar completers = [snippetCompleter, textCompleter, keyWordCompleter];\nexports.setCompleters = function (val) {\n completers.length = 0;\n if (val)\n completers.push.apply(completers, val);\n};\nexports.addCompleter = function (completer) {\n completers.push(completer);\n};\nexports.textCompleter = textCompleter;\nexports.keyWordCompleter = keyWordCompleter;\nexports.snippetCompleter = snippetCompleter;\nvar expandSnippet = {\n name: \"expandSnippet\",\n exec: function (editor) {\n return snippetManager.expandWithTab(editor);\n },\n bindKey: \"Tab\"\n};\nvar onChangeMode = function (e, editor) {\n loadSnippetsForMode(editor.session.$mode);\n};\nvar loadSnippetsForMode = function (mode) {\n if (typeof mode == \"string\")\n mode = config.$modes[mode];\n if (!mode)\n return;\n if (!snippetManager.files)\n snippetManager.files = {};\n loadSnippetFile(mode.$id, mode.snippetFileId);\n if (mode.modes)\n mode.modes.forEach(loadSnippetsForMode);\n};\nvar loadSnippetFile = function (id, snippetFilePath) {\n if (!snippetFilePath || !id || snippetManager.files[id])\n return;\n snippetManager.files[id] = {};\n config.loadModule(snippetFilePath, function (m) {\n if (!m)\n return;\n snippetManager.files[id] = m;\n if (!m.snippets && m.snippetText)\n m.snippets = snippetManager.parseSnippetFile(m.snippetText);\n snippetManager.register(m.snippets || [], m.scope);\n if (m.includeScopes) {\n snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes;\n m.includeScopes.forEach(function (x) {\n loadSnippetsForMode(\"ace/mode/\" + x);\n });\n }\n });\n};\nvar doLiveAutocomplete = function (e) {\n var editor = e.editor;\n var hasCompleter = editor.completer && editor.completer.activated;\n if (e.command.name === \"backspace\") {\n if (hasCompleter && !util.getCompletionPrefix(editor))\n editor.completer.detach();\n }\n else if (e.command.name === \"insertstring\" && !hasCompleter) {\n lastExecEvent = e;\n var delay = e.editor.$liveAutocompletionDelay;\n if (delay) {\n liveAutocompleteTimer.delay(delay);\n }\n else {\n showLiveAutocomplete(e);\n }\n }\n};\nvar lastExecEvent;\nvar liveAutocompleteTimer = lang.delayedCall(function () {\n showLiveAutocomplete(lastExecEvent);\n}, 0);\nvar showLiveAutocomplete = function (e) {\n var editor = e.editor;\n var prefix = util.getCompletionPrefix(editor);\n var previousChar = e.args;\n var triggerAutocomplete = util.triggerAutocomplete(editor, previousChar);\n if (prefix && prefix.length >= editor.$liveAutocompletionThreshold || triggerAutocomplete) {\n var completer = Autocomplete.for(editor);\n completer.autoShown = true;\n completer.showPopup(editor);\n }\n};\nvar Editor = require(\"../editor\").Editor;\nrequire(\"../config\").defineOptions(Editor.prototype, \"editor\", {\n enableBasicAutocompletion: {\n set: function (val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val) ? val : completers;\n this.commands.addCommand(Autocomplete.startCommand);\n }\n else {\n this.commands.removeCommand(Autocomplete.startCommand);\n }\n },\n value: false\n },\n enableLiveAutocompletion: {\n set: function (val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val) ? val : completers;\n this.commands.on('afterExec', doLiveAutocomplete);\n }\n else {\n this.commands.off('afterExec', doLiveAutocomplete);\n }\n },\n value: false\n },\n liveAutocompletionDelay: {\n initialValue: 0\n },\n liveAutocompletionThreshold: {\n initialValue: 0\n },\n enableSnippets: {\n set: function (val) {\n if (val) {\n this.commands.addCommand(expandSnippet);\n this.on(\"changeMode\", onChangeMode);\n onChangeMode(null, this);\n }\n else {\n this.commands.removeCommand(expandSnippet);\n this.off(\"changeMode\", onChangeMode);\n }\n },\n value: false\n }\n});\n\n}); (function() {\n ace.require([\"ace/ext/language_tools\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","export default \"__VITE_ASSET__DAUn4uDV__\"","import 'ace-builds/src-noconflict/ace' // get ace editor\nimport \"ace-builds/src-noconflict/mode-javascript\" // get the javascript mode (can't be loaded dynamically)\nimport \"ace-builds/src-noconflict/mode-css\" // get the css mode (can't be loaded dynamically)\nimport \"ace-builds/src-noconflict/mode-json\" // get the json mode (can't be loaded dynamically)\nimport \"ace-builds/src-noconflict/mode-html\" // get the html mode (can't be loaded dynamically)\nimport 'ace-builds/src-noconflict/theme-monokai' // themes can't be loaded dynamically either\nimport 'ace-builds/src-noconflict/theme-iplastic' // themes can't be loaded dynamically either\nimport \"ace-builds/src-noconflict/snippets/javascript\"\nimport \"ace-builds/src-noconflict/ext-settings_menu\"\nimport \"ace-builds/src-noconflict/ext-searchbox\"\n\nimport langTools from \"ace-builds/src-noconflict/ext-language_tools\"\n\nimport jsWorkerUrl from \"ace-builds/src-noconflict/worker-javascript?url\";\nace.config.setModuleUrl(\"ace/mode/javascript_worker\", jsWorkerUrl);\nconsole.log(\"ace config\", ace.config);\n\nexport var Editor = new Proxy({}, { get(target, prop, receiver) { return editor[prop]; } });\n// Make sure the exported object survives redefinition of editor\n\nvar editor = {};\n\nlet EditSession;\n\nconst onActive = [], onSaving = [], onSaved = [];\nconst initEditor = ()=>{\n\n const UndoManager = ace.require('ace/undomanager').UndoManager;\n\n editor.onSaving = f=>onSaving.push(f);\n editor.onSaved = f=>onSaved.push(f);\n\n editor.startSaving = ()=>onSaving.forEach(f=>f instanceof Function && f());\n editor.endSaving = success=>onSaved.forEach(f=>f instanceof Function && f(success));\n \n editor.nullSession = undefined;\n editor.setActive = (session,type=\"\")=>{\n console.log(\"setting active with\",session,type);\n editor.setSession(session);\n session.undoManager = session.undoManager||new UndoManager();\n session.setUndoManager(session.undoManager);\n if (type.match(/javascript/i)) editor.session.setMode(\"ace/mode/javascript\"); \n else if (type.match(/(^|\\W)css(\\W|$)/i)) editor.session.setMode(\"ace/mode/css\");\n else if (type.match(/(^|\\W)html(\\W|$)/i)) editor.session.setMode(\"ace/mode/html\");\n else editor.session.setMode(\"ace/mode/text\");\n onActive.forEach(f=>f instanceof Function && f(session));\n };\n editor.unsetActive = session=>{\n if (editor.session!=session) return;\n if (editor.nullSession===undefined) editor.nullSession = new EditSession(\"\");\n editor.setSession(editor.nullSession);\n onActive.forEach(f=>f instanceof Function && f(null));\n }\n \n editor.onActive = f=>onActive.push(f);\n\n editor.EditSession = EditSession;\n}\n\nexport function initNotepad(){\n console.log(\"Initializing editor\");\n\n editor = ace.edit('notepad');\n //editor.setTheme(\"ace/theme/monokai\");\n editor.setTheme(\"ace/theme/iplastic\");\n editor.session.setMode(\"ace/mode/javascript\");\n editor.setFontSize(16);\n editor.setPrintMarginColumn(115);\n // AUTOCOMPLETE\n //\n const ACglobalPattern = new RegExp(\"/[*]! ([$]AC[$] .+? [$]AC[$]) [*]/\", \"g\");\n const ACpattern = new RegExp(\"[$]AC[$] ([^.]+?)[.]([^\\\\s]+?) (.+?) [$]AC[$]\", \"g\");\n const ACcommands = [];\n // const langTools = require(\"ace-builds/src-noconflict/ext-language_tools\");\n\n editor.feedAutocompletion = async m=>{\n let data = JSON.parse(m.message);\n const version = data.match(/- Version (.+)/)[1];\n try{\n const doc = await fetch('https://raw.githubusercontent.com/PennController/penncontroller/master/releases/'+version+'/doc.js')\n if (doc && doc.status == 200)\n data = await doc.text();\n } catch (e) { }\n let AC;\n while ((AC = ACglobalPattern.exec(data)) !== null){\n let command;\n while ((command = ACpattern.exec(AC[1])) !== null)\n ACcommands.push(command);\n }\n const staticWordCompleter = {\n getCompletions: function(editor, session, pos, prefix, callback) {\n callback(null, ACcommands.map(function(command) {\n let value = command[2], par = value.indexOf(\"(\");\n if (par>0) value = value.substring(0,par);\n let caption = value;\n if (command[1].match(/PElement/))\n caption = command[1].split(\" \")[0] + \".\" + value;\n return {\n caption: caption,\n value: value,\n meta: command[1],\n description: command[3],\n command: command[2]\n };\n }));\n \n },\n getDocTooltip: function(item) {\n // let lang = ace.require(\"ace/lib/lang\")\n let lang = ace.require(\"ace/lib/lang\")\n if (!item.docHTML) {\n if (item.type == \"snippet\")\n item.docHTML = [\n \"\", lang.escapeHTML(item.caption), \"\", \"
\",\n lang.escapeHTML(item.snippet)\n ].join(\"\");\n else if (item.description)\n item.docHTML = [\n \"\", lang.escapeHTML(item.meta) , \".\" , lang.escapeHTML(item.command), \"\", \"
\",\n lang.escapeHTML(item.description)\n ].join(\"\");\n }\n }\n };\n console.log(\"staticWordCompleter\", staticWordCompleter);\n langTools.addCompleter(staticWordCompleter); \n console.log(\"after staticWordCompleter\");\n editor.setOptions({\n enableBasicAutocompletion: true,\n enableSnippets: true,\n enableLiveAutocompletion: true\n });\n console.log(\"after setOptions\");\n }\n //\n // END AUTOCOMPLETE\n\n EditSession = ace.EditSession;\n\n initEditor();\n\n // editor.commands.addCommand({\n // name: 'save',\n // bindKey: {win: \"Ctrl-S\", \"mac\": \"Cmd-S\"},\n // exec: (...args)=>saveAllFiles(...args)\n // });\n\n console.log(\"ended initializing editor\");\n}\n\ninitEditor();\n","import { Uploader } from '../shared/uploader';\nimport { Message } from '../shared/modular_messages';\n\nlet pendingRequests = []\nlet beforeIng = false;\nconst beforeCallbacks = [];\nconst progressCallbacks = [];\n\nclass lazyAttr {\n constructor(o,a){ this.o = o; this.a = a; }\n get(){ return this.o[this.a] }\n}\n\n// This will create the experiment first (by running all beforeCallbacks) if it doesn't exist yet\nconst request = (type, ...args) => {\n let ro = {args: args, type: type, then: [], success: [], error: []};\n pendingRequests.push(ro);\n if (!beforeIng) {\n beforeIng = true;\n Promise.all(beforeCallbacks.map(f=>f(type, ...args))).then(()=>{\n const sendingRequests = [...pendingRequests];\n pendingRequests = [];\n beforeIng = false;\n sendingRequests.forEach(a=>{\n const evalArgs = a.args.map(ag=>ag instanceof lazyAttr ? ag.get() : ag);\n evalArgs.forEach(ag=>{\n if (!(ag instanceof Object)) return;\n for (let e in ag)\n if (ag[e] instanceof lazyAttr) ag[e] = ag[e].get();\n });\n let r = Uploader['request_'+a.type](...evalArgs);\n a.then.forEach(f=>r.then(f));\n a.success.forEach(f=>r.success(f));\n a.error.forEach(f=>r.error(f));\n if (a.type=='xml')\n progressCallbacks.forEach(f=>(f instanceof Function) && r.progress(pct=>f(pct,args)));\n });\n });\n }\n let h = {};\n h.then = f=>[ro.then.push(f),h][1]; h.success = f=>[ro.success.push(f),h][1]; h.error = f=>[ro.error.push(f),h][1];\n return h;\n};\n\nconst overwrite_resource = (file,resource) => request( \"xml\" ,\n {overwrite_resource: file, resource_id: new lazyAttr(resource,'id'), timestamp: Date.now()} );\nconst new_resource = (file,directory) => request( \"xml\" , \n {new_resource: file, directory_id: new lazyAttr(directory,'id'), timestamp: Date.now()} );\nconst rename_resource = (newname,resource) => request( \"xml\" , \n {newname: newname, resource_id: new lazyAttr(resource,'id'), timestamp: Date.now()} );\n\nvar XpUploader = {\n xml: (...args) => request(\"xml\", ...args),\n json: (...args) => request(\"json\", ...args),\n then: (...args) => Uploader.then(...args),\n progress: f => progressCallbacks.push(f),\n before: (...args) => args.forEach(f=>f instanceof Function && beforeCallbacks.push(f)),\n overwrite_resource: overwrite_resource,\n new_resource: new_resource,\n rename_resource: rename_resource\n};\n\n\n// Refresh printed sizes after each request\nUploader.then( m=> {\n if (m.hasOwnProperty(\"danger\"))\n Message.warning(m.danger, 'experimentStatus' );\n \n return true;\n})\n\n\nexport { XpUploader };\n","\n\n{#if resource.deleted===false}\n
\n {#if uploading>=0}\n
\n \n \n \n {resource.name}\n
\n
\n {:else}\n
\n resource.selected=!resource.selected} checked={resource.selected} >\n \n {#if canedit}\n \n {printname}\n {:else}\n \n {printname}\n {/if}\n
{size}
\n
\n {/if}\n
\n {#if modular=='preview'}\n modular=null}>\n

Preview {resource.name}

\n\n
\n {#if type.match('image')}\n Preview of image {resource.name}\n {:else if type.match('audio')}\n
\n \n
Note that browsers vary in their support of file formats.\n If you are unable to preview your file, consider encoding it in an alternative format.
\n
\n {/if}\n{/if}\n","export default {}","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = require('stream');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (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 }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream;\n exports = module.exports = Stream.Readable;\n exports.Readable = Stream.Readable;\n exports.Writable = Stream.Writable;\n exports.Duplex = Stream.Duplex;\n exports.Transform = Stream.Transform;\n exports.PassThrough = Stream.PassThrough;\n exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n}\n","\"use strict\";\n\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob(\"application/zip\").size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n\ntry {\n exports.nodestream = !!require(\"readable-stream\").Readable;\n} catch(e) {\n exports.nodestream = false;\n}\n","\"use strict\";\nvar utils = require(\"./utils\");\nvar support = require(\"./support\");\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input) {\n var output = [];\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0, len = input.length, remainingBytes = len;\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0, resultIndex = 0;\n\n var dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9+/=]/g, \"\");\n\n var totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n var output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n","\"use strict\";\n\nmodule.exports = {\n /**\n * True if this is running in Nodejs, will be undefined in a browser.\n * In a browser, browserify won't include this file and the whole module\n * will be resolved an empty object.\n */\n isNode : typeof Buffer !== \"undefined\",\n /**\n * Create a new nodejs Buffer from an existing content.\n * @param {Object} data the data to pass to the constructor.\n * @param {String} encoding the encoding to use.\n * @return {Buffer} a new Buffer.\n */\n newBufferFrom: function(data, encoding) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(data, encoding);\n } else {\n if (typeof data === \"number\") {\n // Safeguard for old Node.js versions. On newer versions,\n // Buffer.from(number) / Buffer(number, encoding) already throw.\n throw new Error(\"The \\\"data\\\" argument must not be a number\");\n }\n return new Buffer(data, encoding);\n }\n },\n /**\n * Create a new nodejs Buffer with the specified size.\n * @param {Integer} size the size of the buffer.\n * @return {Buffer} a new Buffer.\n */\n allocBuffer: function (size) {\n if (Buffer.alloc) {\n return Buffer.alloc(size);\n } else {\n var buf = new Buffer(size);\n buf.fill(0);\n return buf;\n }\n },\n /**\n * Find out if an object is a Buffer.\n * @param {Object} b the object to test.\n * @return {Boolean} true if the object is a Buffer, false otherwise.\n */\n isBuffer : function(b){\n return Buffer.isBuffer(b);\n },\n\n isStream : function (obj) {\n return obj &&\n typeof obj.on === \"function\" &&\n typeof obj.pause === \"function\" &&\n typeof obj.resume === \"function\";\n }\n};\n","'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\nif (process.browser) {\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a \n\n
=0)?'unfolded':'folded'} {dropHighlight}\"\n on:dragover={()=>dropHighlight='dropHighlight'} on:dragleave={()=>dropHighlight=''} on:drop={drop}\n style=\"order: {order.indexOf(directory.name)||0}\"\n>\n
foldUnfold(e)}>\n

\n {directory.alias||directory.name}\n \n \n

\n {#if newfile===false}\n
n
\n
modular={type:'upload'}}>u
\n {/if}\n
\n
\n \n \n
\n
{if (selected_resources().length) modular = {type:'delete',files:selected_resources()}}}\n class='delete' help='Delete selection'>X
\n
v
\n
\n
\n\n
\n {#if newfile!==false}\n \n {/if}\n {#each directory.resources as resource}\n \n {/each}\n
\n
\n\n\n{#if modular}\n
{ if (e.target.classList.contains('modulars')&&!modular.deleting) modular=null; }}>\n
\n
{ if (!modular.deleting) modular=null; }}>X
\n
\n {#if modular.type=='delete'}\n

Confirm deletion

\n

\n Are you sure you want to delete \n {@html modular.files.map(v=>\"\"+v.name+\"\").join(\", \")}\n from {directory.alias||directory.name}?\n

\n {#if modular.deleting}\n Deleting {@html modular.files.map(v=>\"\"+v.name+\"\").join(\", \")} files from {directory.alias||directory.name}\n \n {:else}\n
\n \n \n
\n {/if}\n {:else if modular.type == \"upload\"}\n

Upload files to {directory.alias||directory.name}

\n

\n \n \n \n \n

\n

or

\n
dropHighlight='dropHighlight'} on:dragleave={()=>dropHighlight=''}>\n Drop content here\n
\n {/if}\n
\n
\n
\n{/if}\n","\n\n
\n\n
\n {#each directories as directory}\n dropFile(f,d)} />\n {/each}\n
\n\n\n{#if modular}\n
{ if (e.target.classList.contains('modulars')) { modular=null; overwritingFiles = []; } }}>\n
\n
{ modular=null; overwritingFiles = []; }}>X
\n
\n {#if modular.type=='overwrite'}\n

Confirm overwrite

\n

You project already contains copies of some file(s) you want to upload.

\n

Check the box of the file(s) that you want to overwrite:

\n
    \n {#each overwritingFiles as e}\n
  • \n {e.resource.directory.alias||e.resource.directory.name}/{e.resource.name}:\n e.overwrite=c.target.checked} /> Overwrite
  • \n {/each}\n
\n \n \n {/if}\n
\n
\n
\n{/if}\n","\n\n\n \n
\n {#each directories as directory}\n {#each directory.resources as resource}\n {#if resource._editor.isOpen===true}\n
Editor.setActive(resource._editor.session,resource.type)}>\n \n {resource.name}\n
resource._editor.close()}>
\n
\n {/if}\n {/each}\n {/each}\n
\n \n
\n\n{#if readonly}\n
\n
Editor disabled during data collection
\n
\n{/if}\n\n{#if activeSession && activeSession.readonly}\n
\n
Editor disabled for this file
\n
\n{/if}\n","(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActionCable = {});\n})(this, function(exports) {\n \"use strict\";\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n messages.push(Date.now());\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [ \"[ActionCable]\" ].concat(messages));\n }\n }\n };\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var now = function now() {\n return new Date().getTime();\n };\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n var ConnectionMonitor = function() {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n this.pollTimeout = setTimeout(function() {\n _this.reconnectIfStale();\n _this.poll();\n }, this.getPollInterval());\n };\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval, min = _constructor$pollInte.min, max = _constructor$pollInte.max, multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n if (document.visibilityState === \"visible\") {\n setTimeout(function() {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \" + document.visibilityState);\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n return ConnectionMonitor;\n }();\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n };\n var message_types = INTERNAL.message_types, protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n var Connection = function() {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n }, allowReconnect = _ref.allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return indexOf.call(states, this.getState()) >= 0;\n };\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n };\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function() {};\n }\n };\n return Connection;\n }();\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n var _JSON$parse = JSON.parse(event.data), identifier = _JSON$parse.identifier, message = _JSON$parse.message, reason = _JSON$parse.reason, reconnect = _JSON$parse.reconnect, type = _JSON$parse.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n var Subscription = function() {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n return Subscription;\n }();\n var SubscriptionGuarantor = function() {\n function SubscriptionGuarantor(subscriptions) {\n classCallCheck(this, SubscriptionGuarantor);\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n SubscriptionGuarantor.prototype.guarantee = function guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(\"SubscriptionGuarantor guaranteeing \" + subscription.identifier);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(\"SubscriptionGuarantor already guaranteeing \" + subscription.identifier);\n }\n this.startGuaranteeing();\n };\n SubscriptionGuarantor.prototype.forget = function forget(subscription) {\n logger.log(\"SubscriptionGuarantor forgetting \" + subscription.identifier);\n this.pendingSubscriptions = this.pendingSubscriptions.filter(function(s) {\n return s !== subscription;\n });\n };\n SubscriptionGuarantor.prototype.startGuaranteeing = function startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n };\n SubscriptionGuarantor.prototype.stopGuaranteeing = function stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n };\n SubscriptionGuarantor.prototype.retrySubscribing = function retrySubscribing() {\n var _this = this;\n this.retryTimeout = setTimeout(function() {\n if (_this.subscriptions && typeof _this.subscriptions.subscribe === \"function\") {\n _this.pendingSubscriptions.map(function(subscription) {\n logger.log(\"SubscriptionGuarantor resubscribing \" + subscription.identifier);\n _this.subscriptions.subscribe(subscription);\n });\n }\n }, 500);\n };\n return SubscriptionGuarantor;\n }();\n var Subscriptions = function() {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n };\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n return this.findAll(identifier).map(function(subscription) {\n _this.forget(subscription);\n _this.notify(subscription, \"rejected\");\n return subscription;\n });\n };\n Subscriptions.prototype.forget = function forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter(function(s) {\n return s !== subscription;\n });\n return subscription;\n };\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function(s) {\n return s.identifier === identifier;\n });\n };\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n return this.subscriptions.map(function(subscription) {\n return _this2.subscribe(subscription);\n });\n };\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return this.subscriptions.map(function(subscription) {\n return _this3.notify.apply(_this3, [ subscription, callbackName ].concat(args));\n });\n };\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n var subscriptions = void 0;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map(function(subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n Subscriptions.prototype.subscribe = function subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n };\n Subscriptions.prototype.confirmSubscription = function confirmSubscription(identifier) {\n var _this4 = this;\n logger.log(\"Subscription confirmed \" + identifier);\n this.findAll(identifier).map(function(subscription) {\n return _this4.guarantor.forget(subscription);\n });\n };\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n return Subscriptions;\n }();\n var Consumer = function() {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n createClass(Consumer, [ {\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n } ]);\n return Consumer;\n }();\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.SubscriptionGuarantor = SubscriptionGuarantor;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n","import { Message } from '../shared/modular_messages';\nimport { waitUntil } from '../shared/utils';\n\nconst uid=()=>(s=>[s()+s(),s(),s(),s(),s(),s()+s()+s()].join('-'))(()=>Math.floor((1+Math.random())*0x10000).toString(16).substring(1))\n\nlet exp_id = -1;\nlet result_channel = null;\nconst results = {dev: {}, prod: {}};\nconst requests = {};\n\nclass ResultRequest {\n constructor(stage=\"dev\"){\n this._stage = stage;\n this._id = uid();\n this._callbacks=[];\n this._streams=[];\n this._complete=false;\n this._target_n_rows = -1;\n this._nrows = 0;\n this._request = {id: exp_id, pid: this._id, stage: this._stage, from: 0, to: -1};\n this._channel = result_channel;\n this._getting = false;\n this._receivedPackets = [];\n this._expectedPackets = undefined;\n requests[this._id] = this;\n }\n request(obj){\n for (let o in obj)\n this._request[o] = obj[o];\n return this;\n }\n send(){\n if (this._getting) return this;\n this._getting = true;\n // const current_results = results[this._stage];\n // if (current_results && current_results.updated_at) { // Make sure not to re-download again\n // const exclude = [...(this._request.exclude_submissions||[])];\n // Object.keys(current_results).forEach(v=>exclude.push(Number(v)));\n // this.request({updated_at: current_results.updated_at, exclude_submissions: exclude});\n // }\n console.log(\"trying to send\", this._request, \"channel\",this._channel,\"connected\",connected);\n if (this._channel==null||connected==false)\n waitUntil( ()=>result_channel&&connected ).then( ()=> {\n this._channel = result_channel;\n this._channel.send(this._request);\n });\n else\n this._channel.send(this._request);\n return this;\n }\n stream(s){\n this._streams.push(s);\n return this;\n }\n then(c){\n if (this._complete) c(results[this._stage]);\n else this._callbacks.push(c);\n return this;\n }\n complete(){\n if (this._complete) return;\n this._complete=true;\n this._callbacks.forEach(c=>c instanceof Function && c(results[this._stage]));\n this._getting = false;\n return this;\n }\n rows(rs){\n this._nrows += rs.length;\n rs.forEach(r=>{\n if (results[this._stage][r.submission_id]===undefined) results[this._stage][r.submission_id] = {submission: null, rows: []};\n results[this._stage][r.submission_id].rows.push(r);\n });\n if (this._target_n_rows > -1 && this._nrows>=this._target_n_rows) this.complete();\n return this;\n }\n receive(data){\n const current_results = results[this._stage];\n this._streams.forEach(s=>s instanceof Function && s(data,current_results));\n\n if (data.packet!==undefined && this._receivedPackets.indexOf(data.packet)<0) this._receivedPackets.push(data.packet);\n if (data.packets) this._expectedPackets = data.packets;\n\n if (data.submissions){\n if (data.updated_at) current_results.updated_at = data.updated_at;\n data.submissions.forEach(s=>{\n current_results[s.id] = {submission: s, rows: []}; \n });\n }\n if (data.rows !== undefined)\n this.rows(data.rows);\n if (data.n_rows_total !== undefined)\n this._target_n_rows = data.n_rows_total;\n // else if (data.message && data.message==\"complete\"){\n // this._target_n_rows = data.n_rows_total;\n // if (this._nrows>=this._target_n_rows) this.complete();\n // }\n\n if (this._expectedPackets instanceof Array && this._expectedPackets.filter(v=>this._receivedPackets.indexOf(v)<0).length==0)\n this.complete();\n\n return this;\n }\n}\n\nconst newSubmissionCallbacks = [], rejectionCallbacks = [];\nlet connected = false;\n// javascript file for chat channel\nimport consumer from \"./consumer\";\nconst init_channel = () => {\n console.log(\"called init_channel; connected\",connected,\"result_channel\",result_channel);\n if (connected) return;\n result_channel = consumer.subscriptions.create({channel: \"ResultsChannel\", experiment_id: exp_id}, {\n connected() {\n console.log(\"Results Channel connection active\");\n connected = true;\n },\n\n disconnected() {\n console.log(\"Results Channel connection terminated\");\n connected = false;\n },\n\n received(data) {\n console.log(\"channel received\", data);\n if (data.new_submission){\n console.log(\"new submission; callbacks\", newSubmissionCallbacks);\n newSubmissionCallbacks.forEach(f=>f instanceof Function && f(data));\n }\n\n if (data.warning)\n Message.warning( data.warning , 'results' );\n \n if (!data.hasOwnProperty('pid')) return;\n const request = requests[data.pid];\n if (request === undefined) return;\n\n if (!data.hasOwnProperty('stage')) return;\n\n request.receive(data);\n },\n\n rejected() {\n console.log(\"connection rejected\");\n rejectionCallbacks.forEach(f=>f instanceof Function && f.call());\n }\n });\n};\n\n\nconst process_next_submission = (object,resolve) => {\n const submissions = object.submissions, lines = object.lines, callback = object.callback;\n if (submissions.length<1) return resolve();\n const submission = submissions.shift();\n const columns = JSON.parse(submission.submission.array_column_names);\n const eventtime = columns.indexOf(\"EventTime\");\n if (eventtime>=0)\n submission.rows.sort((a,b)=>{\n const column_idx = {\n a: JSON.parse(a.column_refs).indexOf(eventtime),\n b: JSON.parse(b.column_refs).indexOf(eventtime)\n }\n if (column_idx.a<0||column_idx.b<0) return;\n return JSON.parse(a.values)[column_idx.a]>JSON.parse(b.values)[column_idx.b];\n });\n // console.log(\"submission\", submission.submission.reception_time*1000);\n lines.push(`#\n# Results on ${(new Date(submission.submission.reception_time*1000)).toGMTString()}\n# USER AGENT: ${submission.submission.user_agent}\n# Design number was non-random = ${submission.submission.counter}\n#\n# Columns below this comment are as follows:\n# 1. Results reception time.\n# 2. MD5 hash of participant's IP address.\n# 3. Controller name.\n# 4. Order number of item.\n# 5. Inner element number.\n# 6. Label.\n# 7. Latin Square Group.`);\n let column_refs = \"[]\";\n submission.rows.forEach(r=>{\n if (r.column_refs!=column_refs){\n const old_refs = JSON.parse(column_refs), new_refs = JSON.parse(r.column_refs);\n new_refs.forEach( (ref,i)=>{\n if (i >= old_refs.length || old_refs[i] != ref)\n lines.push(`# ${i+8}. ${columns[ref]}.`)\n });\n column_refs = r.column_refs;\n }\n const values = JSON.parse(r.values);\n lines.push([\n submission.submission.reception_time,\n submission.submission.md5,\n r.controller,\n r.item,\n r.element,\n r.label,\n r.group,\n ...values\n ].join(\",\"));\n object.nrows++;\n if (callback instanceof Function)\n callback(object); \n });\n if (object.nrows>0 && object.nrows%2000==0) setTimeout(()=>process_next_submission(object,resolve), 100); // 100ms to breathe\n else window.requestAnimationFrame(()=>process_next_submission(object,resolve));\n}\n\nconst Results = params => {\n if (!window.User.id) {\n results.dev = {};\n results.prod = {};\n }\n exp_id = window.Experiment.id;\n if (exp_id && exp_id > 0 && !connected) init_channel();\n const request = new ResultRequest(params.stage);\n request.request(params);\n return request;\n}\n\nResults.generate_results = async (res,callback)=>{\n const lines = [];\n const submissions = [];\n if (res===undefined) return lines;\n res.forEach( r => r.rows && submissions.push(r) );\n const object = {\n submissions: submissions,\n lines: lines,\n nrows: 0,\n callback: callback\n };\n await new Promise(r=>process_next_submission(object,r));\n return lines;\n};\n\nResults.onNewSubmission = f => newSubmissionCallbacks.push(f);\nResults.onRejected = f => rejectionCallbacks.push(f);\n\nexport { Results };\n","\n\n\n
\n \n {published?'Published':'Unpublished'}\n
\n\n\n{#if isNaN(parseInt(experiment.id)) || experiment.id < 1}\n
\n Results\n
\n{:else}\n \n {#if modular.results}\n modular={}}>\n

Results

\n
\n
previewStage!='dev'&&refreshPreview(previewStage='dev')}>Demo (UNpublished)
\n
previewStage!='prod'&&refreshPreview(previewStage='prod')}>Data-Collection (Published)
\n
\n
\n
\n {#await previewSubmissionIds}\n Fetching list of submissions...\n {:then ids}\n Preview of latest submission (out of {ids.length})\n {#if ids.length==0}\n

No results in yet

\n {:else}\n {#await fetchRows(previewStage,ids.sort((a,b)=>a>b).slice(0,ids.length-1))}\n Fetching rows...\n {:then submissions}\n {#if submissions==undefined}\n No rows to show {downloadingResults}\n {:else}\n \n {#each submissions.slice(-1) as s}\n {#each s.rows.slice(0,100) as row}\n \n \n \n \n \n \n \n \n {#each JSON.parse(row.values) as value, i}\n \n {/each}\n \n {/each}\n {/each}\n
{s.submission.reception_time}{s.submission.md5}{row.controller}{row.item}{row.element}{row.label}{row.group}{value}
\n {/if}\n {/await}\n {/if}\n {/await}\n
\n
\n {#if downloadingResults}\n \n {:else if resultsLink.length > 0}\n resultsLink=''}>\n Ready: Open the results file ({resultsFileStage=='dev'?'Demonstration':'Data-collection'})\n \n {:else}\n
\n \n
\n
\n (only include submissions to )\n
\n {/if}\n
\n\n {#if downloadingResults}\n \n {:else}\n
\n \n Warning: this action cannot be undone! \n
\n \n
\n
\n {/if}\n
\n
\n {/if}\n{/if}\n\n\n
modular={share:true}}>\n \n
\n{#if modular.share}\n modular={}}>\n

Share this experiment

\n

Demonstration link\n info\n

\n \n

Data-collection link\n info\n

\n \n
Advanced\n
Force counter:
\n
Include extra parameters:
\n
\n
\n{/if}\n\n
\n Download\n \n
\n{#if modular.download}\n modular={}}>\n

Download options

\n\n

Download core folders and files only (eg. to create a git repo)

\n\n

Download standalone version (eg. to run on a webserver)

\n\n

\n Note: these archives do not come with any results file.\n Use the Results action to download results.\n

\n
\n{/if}\n\n\n
modular={git: (modular.git||\"sync\")}}>\n \n
\n{#if modular.git=='overwrite'||(modular.git && gitFilesToOverwrite.length>0)}\n modular={}}>\n

Confirm overwrite

\n

You project already contains copies of some file(s) you want to sync from the git repository at {gitURL}.

\n

Check the box of the file(s) that you want to overwrite:

\n
    \n {#each gitFilesToOverwrite as git}\n
  • \n {getDirName(git[0])}/{git[1]}:\n git[3]=e.checked} /> Overwrite
  • \n {/each}\n
\n \n \n
\n{:else if modular.git=='sync'}\n modular={}}>\n

Sync this project with a git repo

\n \n \n
\n \n
\n \n
\n
\n {#if syncing}\n \n {/if}\n

Type your git repo URL and then select a branch to start syncing. \n Select main if in doubt.

\n
\n{/if}\n\n
\n
modular={settings:true}}>Settings
\n
\n{#if modular.settings}\n modular={}}>\n

Settings

\n \n

Description

\n \n
\n{/if}\n","\n\n\n{#await loadContent then _}\n
\n
Folders and Files
\n {#await initEditor() then _}\n get_directories_and_resources(forceRefresh)}\n bind:directories={directories} />\n {/await}\n
\n\n
resizing=e.target}>
\n\n
\n\n
\n \n
\n\n
resizing=e.target}>
\n\n
\n
\n Preview experiment\n
embeddedPreviewLink=getPreviewLink()}>\n Refresh\n
\n Open in new tab\n
\n {#await embeddedPreviewLink}\n \n {:then link}\n \n {/await}\n
\n
\n\n
resizing=e.target}>
\n\n
\n
Actions
\n get_directories_and_resources(forceRefresh)}\n experiment={experiment} slug={slug} />\n
\n{/await}\n","\n\n
\n
{savingText}
\n {#if editName && !renaming}\n
\n {:else}\n
editName=true}>{name}
\n {/if}\n
\n
{Math.round(size / 10000)/100}
\n
\n
\n","import './experiments.css';\n\nimport Main from '../experiment/experiment.svelte';\nimport TopBar from '../experiment/topbar.svelte';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const main = new Main({\n target: document.querySelector(\"div#main-container\")\n });\n const topBar = new TopBar({\n target: document.querySelector(\"div#topbar\")\n });\n window.addEventListener(\"dragover\",e=>e.preventDefault(),false);\n window.addEventListener(\"drop\",e=>e.preventDefault(),false);\n});\n"],"names":["ACE_NAMESPACE","global","define","module","deps","payload","_require","parentId","callback","lookup","params","i","l","dep","require","packagedModule","normalizeModule","moduleName","chunks","base","previous","exports","mod","req","returnValue","exportAce","ns","root","defineProp","obj","name","val","searchString","position","subjectString","lastIndex","count","result","string","str","target","output","index","source","key","o","k","predicate","len","thisArg","kValue","item","value","O","start","relativeStart","end","relativeEnd","final","deepCopy","copy","a","trimBeginRegexp","trimEndRegexp","array","arr","map","props","regExp","matches","fcn","timer","deferred","timeout","defaultTimeout","_self","line","last","supportsUnicodeFlag","_navigator","os","ua","appName","useragent","XHTML_NS","buildDom","parent","refs","txt","els","ch","el","options","childIndex","n","doc","tag","element","textContent","classes","add","node","className","include","id","sheets","strictCSP","cssCache","insertPendingStyles","cache","importCssString","cssText","container","style","uri","inner","outer","body","noScrollbar","withScrollbar","styles","property","div","tx","ty","dom","url","xhr","path","head","s","_","isAbort","ctor","superCtor","mixin","proto","EventEmitter","stopPropagation","preventDefault","eventName","e","listeners","defaultHandler","newCallback","resolve","handlers","old","disabled","capturing","msg","data","defaultEnglishMessages","oop","reportError","optionsProvider","optList","optionNames","opt","warn","message","messages","nlsPlaceholders","AppConfig","opts","optionHash","defaultString","translated","dollarMatch","curlyBracketMatch","lang","net","component","parts","sep","re","subst","loader","cb","customLoader","moduleId","onLoad","loadedModule","moduleType","load","afterLoad","err","reportErrorIfPathIsNotConfigured","config","ace","init","packaged","scriptOptions","scriptUrl","currentScript","currentDocument","scripts","script","src","attributes","j","attr","deHyphenate","m","m1","Range","startRow","startColumn","endRow","endColumn","range","row","column","cmp","p","firstRow","lastRow","session","screenPosStart","screenPosEnd","p1","p2","Keys","codeToKeyCode","chr","modifiers","mods","x","keyCode","keyString","keys","pressedKeys","ts","activeListenerOptions","detectListenerOptionsSupport","getListenerOptions","EventListener","elem","type","removeListener","addListener","destroyer","eventHandler","releaseCaptureHandler","ownerDocument","onMouseUp","factor","deltaX","deltaY","linePixels","pagePixels","elements","timeouts","callbackName","clicks","startX","startY","eventNames","onMousedown","isNewClick","getModifierHash","normalizeCommandKeys","hashId","location","dt","lastDefaultPrevented","resetPressedKeys","postMessageId","win","messageName","listener","handler","delay","$cancelT","event","nls","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","isIOS","valueResetRegex","isMobile","TextInput","parentNode","host","text","copied","pasted","inComposition","sendingText","tempStyle","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","rowStart","rowEnd","numberOfExtraLines","isFocused","number","arialLabel","resetSelection","top","isTransformed","ancestors","t","curOp","commandName","isUserAction","onCompositionEnd","positionToSelection","selection","newValue","selectionStart","selectionEnd","afterContextMenu","lines","prevLine","nextLine","isAllSelected","onSelect","inputHandler","sendText","fromInput","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onInput","onCompositionUpdate","handleClipboardData","forceIEMime","clipboardData","mime","doCopy","isCut","onCut","onCopy","onPaste","onCompositionStart","cancelComposition","syncComposition","onKeyup","readOnly","bringToFront","rect","left","maxTop","move","closeTimeout","onContextMenuClose","onContextMenu","addIosSelectionHandler","typingResetTimeout","typing","detectArrowKeys","modifier","command","_isMobile","_isIOS","DRAG_OFFSET","SCROLL_COOLDOWN_T","DefaultHandlers","mouseHandler","editor","ev","inSelection","pos","button","selectionRange","selectionEmpty","waitForClickSelection","anchor","cursor","orientedRange","calcRangeOrientation","unitName","cmpStart","cmpEnd","distance","calcDistance","time","prevScroll","vx","vy","direction","canScroll","isSlower","ax","ay","bx","by","contentOverflows","__extends","extendStatics","d","b","__","__values","preventParentScroll","CLASSNAME","Tooltip","html","y","theme","PopupManager","popup","e_1","_a","e_2","_b","visiblepopups","_c","_d","shouldDisplay","visiblepopups_1","visiblepopups_1_1","visiblePopup","e_2_1","e_1_1","popupA","popupB","rectA","rectB","popupManager","HoverTooltip","_super","_this","isMousePressed","docPos","screenPos","clippedPos","domNode","startingEvent","MARGIN","renderer","labelHeight","labelWidth","spaceBelow","isAbove","GutterHandler","gutter","tooltip","GutterTooltip","gutterRegion","tooltipTimeout","mouseEvent","showTooltip","maxRow","screenRow","hideTooltip","moveTooltip","gutterRow","gutterCell","gutterElement","windowWidth","windowHeight","width","height","annotationsInRow","annotation","fold","annotationsInFold","mostSevereAnnotationInFoldType","annotationType","summaryFoldedAnnotations","annotationMessages","iconClassName","lineElement","iconElement","tooltipElement","annotations","summary","annotationTypes","annotationTypes_1","annotationTypes_1_1","label","MouseEvent","domEvent","documentRow","screenTopRow","AUTOSCROLL_DELAY","SCROLL_CURSOR_DELAY","SCROLL_CURSOR_HYSTERESIS","DragdropHandler","dragImage","mouseTarget","dragSelectionMarker","timerId","dragCursor","counter","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","self","dataTransfer","dropEffect","canAccept","addDragMarker","getDropEffect","onMouseMoveTimer","clearDragMarker","dropData","scrollCursorIntoView","prevCursor","now","vMovement","hMovement","autoScroll","lineHeight","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","onDragInterval","onMouseMove","types","copyAllowed","moveAllowed","copyModifierState","effectAllowed","interval","cursorStyle","clickCount","eventTarget","mode","touchStartT","lastT","longTouchTimer","animationTimer","animationSteps","vX","vY","pressed","contextMenu","createContextMenu","isOpen","updateMenu","selected","hasUndo","canExecuteCommand","cmd","handleClick","action","showContextMenu","hideContextMenu","pagePos","leftOffset","scrollLeft","handleLongTap","switchToSelectionMode","textarea","touches","h","w","touchObj","cursorPos","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","animate","wheelX","wheelY","oldScrollTop","DefaultGutterHandler","addTouchListeners","MouseHandler","focusEditor","windowBlurred","gutterEl","character","state","mouseMoveHandler","onCaptureEnd","onOperationEnd","onCaptureInterval","stop","FoldHandler","keyUtil","KeyBinding","kb","toExecute","success","commands","dir","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","LTR","RTL","L","R","EN","AN","ON","B","S","AL","WS","CS","ES","ET","NSM","LRE","RLE","PDF","LRO","RLO","BN","UnicodeTBL00","UnicodeTBL20","_computeLevels","chars","levels","charTypes","impTab","prevState","newClass","newLevel","newState","cond","condPos","ix","_getCharacterType","_getCharClass","_invertLevel","lev","_array","lo","hi","tmp","cType","wType","nType","c","rtlCandidate","uc","textCharTypes","isRtl","logicalFromVisual","bidiLevels","ret","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","docRow","splitIndex","delta","rowCache","currentIndex","prevIndex","isLastRow","endOfLine","splits","shift","size","fontMetrics","bidiCharWidth","showInvisibles","eolChar","isRtlDir","col","leftBoundary","logicalIdx","visualIdx","startCol","endCol","level","selections","offset","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","posX","charWidth","Selection","lead","reverse","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","mover","excludeLastChar","foldLine","tabSize","firstColumnPosition","beforeCursor","leadingSpace","lineEnd","textEnd","rightOfCursor","leftOfCursor","whitespaceRe","tokenRe","rows","offsetX","widget","keepDesiredColumn","r","func","r1","MAX_TOKEN_COUNT","Tokenizer","rules","ruleRegExps","matchTotal","mapping","flag","splitterRurles","rule","adjustedregex","matchcount","match","digit","values","tokens","stack","inChClass","lastCapture","esc","parenOpen","parenClose","square","startState","currentState","matchAttempts","token","skipped","TextHighlightRules","prefix","HighlightRules","escapeRules","states","append","embedRules","addRules","pushState","popState","processState","toInsert","next","stateName","includeName","args","defaultToken","ignoreCase","splitChar","keywords","list","word","Behaviour","behaviours","filter","TokenIterator","initialRow","initialColumn","rowCount","rowTokens","tokenIndex","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","context","contextCache","defaultQuotes","initContext","getWrapped","opening","closing","rowDiff","CstyleBehaviour","excludeTokens","rightChar","matching","openBracePos","next_indent","indent","quotes","quote","leftChar","rightToken","stringBefore","stringAfter","pair","wordRe","isWordBefore","isWordAfter","pairQuotesAfter","shouldPairQuotes","charBefore","currentToken","nextToken","cursorPosInToken","closeDocPos","openDocPos","iterator","iterator2","bracket","wordChars","code","unicode","Mode","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","lineCommentStart","uncomment","shouldInsertSpace","commentWithSpace","comment","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","initialRange","colDiff","startRange","endRange","tab","input","delegations","_loop_1","scope","functionName","this_1","method","language","split","param","completionKeywords","ruleItr","aLength","docLines","doNotValidate","Anchor","point","$getTransformedPoint","noClip","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","applyDelta","Document","textOrLines","newLineMode","length","deleteFirstNewLine","deleteLastNewLine","deletedLines","deltas","isInsert","docLength","MAX","from","to","chunk","newlineLength","BackgroundTokenizer","tokenizer","workerStart","currentLine","endLine","startLine","processedLines","SearchHighlight","clazz","markerLayer","renderedMarkerRanges","ranges","rangeToAddMarkerTo","rangeAsString","UndoManager","allowMerge","undoStackLength","rev","dontSelect","rearrangeUndoStack","deltaSet","undoSelectionRange","diff","rebaseRedoStack","redoSelectionRange","nextDelta","json","stringifyDelta","swapped","swapGroups","clonePos","cloneDelta","stringifyRange","swap","d1","d2","i1","i2","ds1","ds2","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","rest","moveDeltasByOne","redoStack","xformed","deltaSets","FoldLine","foldData","folds","lastEnd","isNewRow","foldBefore","newFoldLine","foldLineNext","idx","lastFoldEndColumn","comparePoints","RangeList","excludeEdges","startIndex","removed","clipped","lineDif","Fold","placeholder","subFold","consumeRange","afterStart","firstConsumed","consumedFolds","restoreRange","consumePoint","restorePoint","Folding","side","foldLines","foundFolds","trim","lastFold","startFoldLine","first","added","startFold","endFold","cloneFolds","expandInner","outermostFolds","startFoldRow","textLine","lastColumn","fd","tryToUnfold","bracketPos","initState","depth","test","foldWidgets","foldMode","ignoreCurrent","fw","firstRange","toggleParent","BracketMatch","charBeforeCursor","isBackwards","bracketsRegExp","typeRe","openBracket","valueIndex","closingBracket","valueLength","prevToken","found","backward","currentTag","openTagStart","openTagName","foundOpenTagEnd","openTagEnd","closeTagStart","closeTagName","closeTagEnd","stepCount","tmpToken","TextMode","EditSession","cacheArray","low","mid","removedFolds","undoManager","editSession","navigateWithinSoftTabs","overwrite","inFront","marker","markerId","markers","highlight","inToken","wordRange","useWorker","$isPlaceholder","oldMode","onReloadTokenizer","scrollTop","force","longestScreenLine","foldIndex","foldStart","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentString","rowRange","deleteRange","useWrapMode","min","max","desiredLimit","$printMargin","limits","wrapLimit","limit","foldLineBefore","wrapData","walkTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","displayLength","lastSplit","lastDocSplit","isCode","indentedSoftWrap","maxIndent","getWrapIndent","indentation","SPACE","TAB","TAB_SPACE","addSplit","minSplit","PUNCTUATION","CHAR_EXT","isFullWidth","CHAR","maxScreenColumn","screenColumn","docColumn","rowLength","doCache","wrapIndent","foldStartRow","wrapRow","screenRowOffset","screenRows","fm","Search","sr","sc","er","ec","prevRange","replacement","$disableFakeMultiline","needle","addWordBoundary","backwards","skipCurrent","forEach","forEachInLine","supportsLookbehind","wordBoundary","firstChar","wordRegExp","needleArray","lastChar","KEY_MODS","MultiHashHandler","platform","$singleCommand","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","getPosition","other","otherPos","keyList","HashHandler","CommandManager","bindKey","mac","cutLine","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","LineWidgets","lineWidgets","hide","noWidgets","w1","changedWidgets","GutterKeyboardHandler","nearestFoldIndex","nearestAnnotationIndex","GutterKeyboardEvent","rowFoldingWidget","isRowFullyVisible","isIconVisible","cell","foldWidget","desinationLane","annotationIndex","foldWidgetIndex","gutterKeyboardHandler","defaultCommands","Editor","commandEvent","scrollIntoView","sel","prev","mergeableCommands","shouldMerge","keyboardHandler","oldSession","tagNamesRanges","markerType","wrap","wordWithBoundary","nl","copyLine","lineMode","isFullLine","transform","lineState","shouldOutdent","lineIndent","prevLineState","currIndent","composition","applyComposition","speed","dragDelay","shouldHighlight","shouldAnimate","display","showPrintMargin","enabled","show","fade","new_range","originalRange","_numberRx","amount","charRange","nr","fp","decimals","nnr","replaceRange","currWordStart","wordParts","curLength","itLength","that","wordPairs","reg","negate","firstCondition","secondCondition","res","columnPosition","previousPosition","currentPosition","wordParts_1","wordParts_1_1","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","select","center","expand","tokenCount","matchType","bracketType","brackets","tagsRanges","lineNumber","times","replaced","newRange","shouldScroll","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","cursorLayer","relativeNumberRenderer","hasValue","blurCommand","focusOnEnterKeyup","lastLineNumber","Lines","canvasHeight","oldConfig","newConfig","screenTop","screenPage","lineTop","fragment","initElement","Gutter","parentEl","rowInfo","annoText","displayAnnoText","annoType","onCreateCell","gutterRenderer","firstLineNumber","lastLineText","gutterWidth","padding","cells","oldLastRow","textNode","annotationNode","annotationIconNode","breakpoints","decorations","rowText","foldClass","isClosedFold","foldAnnotationClass","annotationInFold","foldRange","ariaLabel","highlightGutterLine","Marker","css","layerConfig","stringBuilder","extraStyle","curr","lineRange","getBorderClass","range1","radiusClass","extraLength","tl","tr","br","bl","textTokens","tokenType","isTextToken","Text","unixMode","EOL_CHAR","measure","tabStr","span","spaceClass","spaceContent","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","lineEl","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cols","initialIndent","elementIndentLevel","bracketHighlight","currentIndent","childNodes","indentLevel","splitChars","overflowEl","lastLineEl","invisibleEl","renderTokens","addTokens","Cursor","cursors","blinking","blinkInterval","smoothBlinking","update","blink","onScreen","cursorLeft","cursorTop","pixelPos","cursorIndex","MAX_SCROLL_H","Scrollbar","classSuffix","isVisible","VScrollBar","HScrollBar","ScrollBar","eType","mousePageY","startTop","onScrollInterval","thumbTop","mousePageX","startLeft","thumbLeft","RenderLoop","onRender","changes","change","CHAR_COUNT","USE_OBSERVER","FontMetrics","isRoot","boldSize","clientPos","elPos","zoom","mul","solve","l1","l2","det","sub","m2","ut","u","f","Decorator","colors","allLineHeight","ctx","compare","priorities","compensateFold","currentY","y1","y2","yCenter","GutterLayer","MarkerLayer","TextLayer","CursorLayer","HScrollBarCustom","VScrollBarCustom","editorCss","VirtualRenderer","textLayer","oldSize","right","availableWidth","printMarginColumn","containerEl","posTop","posLeft","bottom","sm","alwaysVisible","scrollHeight","scrollerHeight","st","maxHeight","desiredHeight","hideScrollbars","screenLines","longestLine","horizScroll","hScrollChanged","vScrollBefore","minHeight","scrollPastEnd","vScrollChanged","lineCount","firstRowScreen","firstRowHeight","charCount","$viewMargin","newLeft","newTop","topMargin","bottomMargin","currentTop","currentLeft","twoCharsWidth","alignment","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","endAnimation","canvasPos","insertPosition","textChunks","widgetDiv","hiddenTokens","lastLineDiv","chunkDiv","chunkSpan","pixelPosition","ghostTextHeight","fitsY","textLines","displayTokens","wrapSplits","textSlice","newToken","hasPassedCursor","$workerBlob","workerUrl","BlobBuilder","blobBuilder","createWorker","blob","URL","blobURL","WorkerClient","worker","topLevelNamespaces","classname","importScripts","normalizePath","tlns","ex","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","callbackId","Main","PlaceHolder","others","mainClass","othersClass","undoStack","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarker","undosRequired","isSamePoint","onMouseDown","alt","ctrl","accel","isMultiSelect","mouseX","mouseY","onMouseSelection","screenAnchor","screenCursor","selectionMode","oldRange","tmpSel","rectSel","blockSelect","newCursor","onMouseSelectionEnd","onSelectionInterval","search","find","$blockChangeEvents","lastRange","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","yBackwards","docEnd","markerList","keepOrder","$byLines","rangeList","cmdResult","anim","buf","additive","skip","screenLead","toRemove","all","tmp_1","words","stopAtFirst","sameRowRanges","fr","lr","guessRange","maxCol","minSpace","spaceOffsets","spaceOffset","forceLeft","isLeftAligned","isRightAligned","startW","textW","endW","alignLeft","alignRight","unAlign","MultiSelect","addAltCursorListeners","altCursor","altDown","reset","FoldMode","foldStyle","startLevel","binarySearch","comparator","findAnnotations","matched","oldWidget","gutterAnno","arrow","annoTextLine","Renderer","_id","oldNode","env","JsDocCommentHighlightRules","DocCommentHighlightRules","identifierRe","JavaScriptHighlightRules","keywordMapper","kwBeforeRe","escapedRe","anonymousFunctionRe","functionCallStartRule","comments","JSX","tagRegex","jsxTag","jsxJsRule","MatchingBraceOutdent","is","XmlBehaviour","rightSpace","tokenEndColumn","tokenRow","tokenColumn","nextIndent","JavaScriptBehaviour","xmlBehaviours","BaseFoldMode","voidElements","optionalEndTags","Tag","tagName","firstTag","tags","commentRegex","forceMultiline","startIndent","subRange","XmlFoldMode","CFoldMode","JavaScriptFoldMode","tokenizedLine","endState","results","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","propertyMap","CssCompletions","inParens","skipSemicolon","properties","CssBehaviour","CStyleFoldMode","JsonHighlightRules","XmlHighlightRules","normalize","tagMap","HtmlHighlightRules","group","defaultMode","subModes","MixedFoldMode","optionalTags","commonAttributes","eventAttributes","globalAttributes","attributeMap","findTagName","findAttributeName","HtmlCompletions","attribute","attributeName","JavaScriptMode","CssMode","HtmlFoldMode","contentElement","closer","ignoreFocusOut","documentEscListener","close","setIgnoreFocusOut","ignore","modes","getModeForPath","modesByName","fileName","caption","extensions","filename","supportedModes","nameOverrides","displayName","themeData","modelist","themelist","themes","optionGroups","OptionPanel","option","control","v","nodes","buildItems","items","safeKey","safeId","overlayPage","showSettingsMenu","searchboxCss","MAX_COUNT","SearchBox","showReplaceForm","sb","preventScroll","noMatch","regex","isReplace","$searchBarKb","$closeSearchBarKb","VARIABLES","date","dateFormat","SnippetManager","TabstopToken","escape","formatMatcher","choices","operator","fmtTokens","formatted","oldArgs","fmtParts","gChangeCase","snippet","afterNewLine","gotoNext","snippetText","processedSnippet","processSnippetText","tabstopManager","TabstopManager","selectionId","scopes","snippetMap","snippets","snippetList","snippetNameMap","wrapRegexp","guardedRegexp","guard","addSnippet","removeSnippet","nameMap","guardRe","tabString","tabstops","isNested","expanding","copyValue","isRemove","selectedTabstop","parents","active","parentActive","original","fmt","isEmpty","containsLead","containsAnchor","useLink","moveRelative","arg","snippetId","dest","movePoint","currentSnippetId","content","userAgent","getAriaId","popupAriaRole","optionAriaRole","ariaActiveState","$singleLineEditor","AcePopup","noop","selectionMarker","lastMouseEvent","hoverMarker","setHoverMarker","ariaId","hideHoverMarker","suppressRedraw","bgTokenizer","addToken","lower","filterText","lastI","forceShow","screenHeight","screenWidth","maxH","dims","spaceAbove","fitsX","topdownOnly","where","AceInlineScreenReader","idString","lineIndex","codeElement","snippetManager","AceInline","completion","displayText","fn","completed","arLength","ID_REGEX","completer","identifierRegex","previousChar","util","destroyCompleter","Autocomplete","initialPosition","FilteredList","inlineEnabled","posGhostText","editorContainerBottom","lowestPosition","keepPopupPosition","oldRow","previousSelectedItem","newRow","fromTooltip","completions","CompletionProvider","completionOptions","finished","filtered","emptyMessage","completionsForEmpty","completersLength","tooltipNode","replaceBefore","replaceAfter","total","processResults","isImmediate","immediateResults","upper","loop","matchMask","penalty","fullMatchIndex","splitRegex","getWordIndex","textBefore","wordDistance","prefixPos","wordScores","currentWord","score","wordScore","wordList","textCompleter","keyWordCompleter","transformSnippetTooltip","record","p3","snippetCompleter","completers","expandSnippet","onChangeMode","loadSnippetsForMode","loadSnippetFile","snippetFilePath","doLiveAutocomplete","hasCompleter","lastExecEvent","liveAutocompleteTimer","showLiveAutocomplete","triggerAutocomplete","jsWorkerUrl","prop","receiver","onActive","onSaving","onSaved","initEditor","initNotepad","ACglobalPattern","ACpattern","ACcommands","version","AC","staticWordCompleter","par","langTools","pendingRequests","beforeIng","beforeCallbacks","progressCallbacks","lazyAttr","request","ro","sendingRequests","evalArgs","ag","Uploader","pct","overwrite_resource","file","resource","new_resource","directory","rename_resource","newname","XpUploader","Message","create_if_block_5","if_block1","create_if_block_1","div_name_value","insert","current","dirty","create_if_block_6","input_name_value","input_checked_value","label_for_value","div1","div0","t2_value","set_style","set_data","t2","video","video_src_value","audio","audio_src_value","img","img_src_value","img_alt_value","t1_value","h1","t1","create_if_block","AUTOSAVE","modular","$$props","filtering","$$invalidate","getUrl","rhash","getType","extensionToMime","save_timeout","promise","uploading","dbclicks","clickOnName","canedit","blur","printname","rename","change_handler","__viteBrowserExternal","processNextickArgsModule","nextTick","arg1","arg2","arg3","toString","isarray","stream","require$$0","buffer","Buffer","copyProps","dst","SafeBuffer","encodingOrOffset","fill","encoding","isArray","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","isPrimitive","inherits_browserModule","TempCtor","inheritsModule","require$$1","_classCallCheck","instance","Constructor","copyBuffer","BufferList","entry","pna","destroy","readableDestroyed","writableDestroyed","emitErrorNT","undestroy","destroy_1","_stream_writable","Writable","CorkedRequest","onCorkedFinish","asyncWrite","Duplex","WritableState","require$$2","internalUtil","require$$3","Stream","require$$4","require$$5","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","destroyImpl","require$$6","nop","require$$7","isDuplex","hwm","writableHwm","defaultHwm","noDecode","onwrite","out","realHasInstance","object","writeAfterEnd","validChunk","valid","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","doWrite","writev","onwriteError","sync","finishMaybe","onwriteStateUpdate","needFinish","afterWrite","onwriteDrain","holder","allBuffers","endWritable","callFinal","prefinish","need","corkReq","objectKeys","_stream_duplex","Readable","onend","onEndNT","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","string_decoder","StringDecoder","nb","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","_stream_readable","ReadableState","EElistenerCount","emitter","debugUtil","debug","require$$8","require$$9","kProxyEvents","prependListener","require$$10","readableHwm","require$$11","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","emitReadable","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","pipeOpts","doEnd","endFn","unpipe","onunpipe","readable","unpipeInfo","cleanup","ondrain","pipeOnDrain","cleanedUp","onclose","onfinish","onerror","ondata","increasedAwaitDrain","indexOf","dests","nReadingNextTick","resume","resume_","paused","fromListPartial","hasStrings","copyFromBufferString","copyFromBuffer","endReadableNT","xs","_stream_transform","Transform","afterTransform","rs","done","_this2","err2","_stream_passthrough","PassThrough","define_process_env_default","support","Builder","builder","nodestream","utils","_keyStr","base64","chr1","chr2","chr3","enc1","enc2","enc3","enc4","remainingBytes","resultIndex","dataUrlPrefix","totalLength","nodejsUtils","Mutation","scheduleDrain","called","observer","channel","scriptEl","draining","queue","oldQueue","lib","immediate","task","INTERNAL","REJECTED","FULFILLED","PENDING","UNHANDLED","Promise","resolver","safelyResolveThenable","reject","yes","reason","no","onRejected","onFulfilled","unwrap","QueueItem","tryCatch","getThen","thenable","error","then","onError","onSuccess","tryToUnwrap","iterable","resolved","allResolver","resolveFromAll","outValue","race","response","ES6Promise","external","undefined","nextHandle","tasksByHandle","currentlyRunningATask","registerImmediate","setImmediate","clearImmediate","handle","run","runIfPresent","installNextTickImplementation","canUsePostMessage","postMessageIsAsynchronous","oldOnMessage","installPostMessageImplementation","messagePrefix","onGlobalMessage","installMessageChannelImplementation","installReadyStateChangeImplementation","installSetTimeoutImplementation","attachTo","this","string2binary","stringToArrayLike","part","identity","arrayToStringHelper","resultStr","arrayLikeToString","canUseApply","arrayLikeToArrayLike","arrayFrom","arrayTo","outputType","inputType","supported","Obj","inputData","isBinary","isOptimizedBinaryString","isBase64","isBlob","reader","dataType","GenericWorker","withError","me","GenericWorker_1","_utf8len","string2buf","c2","m_pos","str_len","buf_len","utf8border","buf2string","c_len","utf16buf","Utf8DecodeWorker","previousData","nextBoundary","usableData","Utf8EncodeWorker","ConvertWorker","destType","ConvertWorker_1","NodejsStreamOutputAdapter","helper","updateCb","meta","NodejsStreamOutputAdapter_1","transformZipOutput","mimeType","concat","dataArray","accumulate","updateCallback","chunkType","resultType","StreamHelper","internalType","evt","StreamHelper_1","defaults","DEFAULT_BLOCK_SIZE","DataWorker","dataP","nextIndex","DataWorker_1","makeTable","table","crcTable","crc32","crc","crc32str","crc32_1","Crc32Probe","Crc32Probe_1","DataLengthProbe","propName","DataLengthProbe_1","CompressedObject","compressedSize","uncompressedSize","compression","uncompressedWorker","compressionOptions","compressedObject","utf8","ZipObject","askUnicodeString","isUnicodeString","onUpdate","removedMethods","removedFn","zipObject","TYPED_OK","_has","sources","fnTyped","src_offs","dest_offs","fnUntyped","on","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","zero","STORED_BLOCK","STATIC_TREES","DYN_TREES","MIN_MATCH","MAX_MATCH","LENGTH_CODES","LITERALS","L_CODES","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","DIST_CODE_LEN","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","static_l_desc","static_d_desc","static_bl_desc","TreeDesc","dyn_tree","stat_desc","d_code","dist","put_short","send_bits","send_code","tree","bi_reverse","bi_flush","gen_bitlen","desc","max_code","stree","has_stree","extra","bits","xbits","overflow","gen_codes","bl_count","next_code","tr_static_init","init_block","bi_windup","copy_block","header","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","scan_tree","prevlen","curlen","nextlen","max_count","min_count","send_tree","build_bl_tree","max_blindex","send_all_trees","lcodes","dcodes","blcodes","rank","detect_data_type","black_mask","static_init_done","_tr_init","_tr_stored_block","stored_len","_tr_align","_tr_flush_block","opt_lenb","static_lenb","_tr_tally","trees","adler32","adler","s1","s2","adler32_1","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_OK","Z_STREAM_END","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_DEFAULT_STRATEGY","Z_DEFLATED","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","strm","errorCode","flush_pending","flush_block_only","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","scan","best_len","nice_match","_win","wmask","strend","scan_end1","scan_end","fill_window","_w_size","more","deflate_stored","flush","max_block_size","max_start","deflate_fast","hash_head","bflush","deflate_slow","max_insert","deflate_rle","deflate_huff","Config","good_length","max_lazy","nice_length","max_chain","configuration_table","lm_init","DeflateState","deflateResetKeep","deflateReset","deflateSetHeader","deflateInit2","windowBits","memLevel","strategy","deflateInit","deflate","old_flush","beg","level_flags","bstate","deflateEnd","status","deflateSetDictionary","dictionary","dictLength","avail","tmpDict","deflate_1","STR_APPLY_OK","STR_APPLY_UIA_OK","strings","buf2binstring","ZStream","zstream","zlib_deflate","Z_SYNC_FLUSH","Deflate","dict","chunkSize","_mode","deflator","deflateRaw","gzip","BAD","TYPE","inffast","_in","_out","dmax","wsize","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","op","from_source","dolen","dodist","MAXBITS","ENOUGH_LENS","ENOUGH_DISTS","CODES","LENS","DISTS","lbase","lext","dbase","dext","inftrees","lens","lens_index","codes","table_index","work","sym","drop","used","huff","incr","mask","base_index","offs","extra_index","here_bits","here_op","here_val","inflate_fast","inflate_table","Z_TREES","Z_NEED_DICT","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","MEM","SYNC","DEF_WBITS","zswap32","InflateState","inflateResetKeep","inflateReset","inflateReset2","inflateInit2","inflateInit","virgin","lenfix","distfix","fixedtables","updatewindow","inflate","put","have","last_bits","last_op","last_val","hbuf","order","inf_leave","inflateEnd","inflateGetHeader","inflateSetDictionary","dictid","inflate_1","constants","GZheader","gzheader","zlib_inflate","Inflate","next_out_utf8","tail","utf8str","allowBufError","inflator","inflateRaw","assign","pako","pako_1","USE_TYPEDARRAY","ARRAY_TYPE","flate","FlateWorker","compressions","signature","decToHex","dec","bytes","hex","generateUnixExternalFileAttr","unixPermissions","isDir","generateDosExternalFileAttr","dosPermissions","generateZipParts","streamInfo","streamedContent","streamingEnded","encodeFileName","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","dosTime","dosDate","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","fileRecord","dirRecord","generateCentralDirectoryEnd","entriesCount","centralDirLength","localDirLength","dirEnd","generateDataDescriptors","descriptor","ZipFileWorker","streamFiles","currentFilePercent","remainingFiles","ZipFileWorker_1","getCompression","fileCompression","zipCompression","compressionName","generate","zip","zipFileWorker","relativePath","NodejsStreamInputAdapter","NodejsStreamInputAdapter_1","fileAdd","originalOptions","forceTrailingSlash","parentFolder","folderAdd","isCompressedEmpty","zipObjectContent","lastSlash","createFolders","regexp","newFolder","kids","DataReader","newIndex","dostime","DataReader_1","ArrayReader","sig","sig0","sig1","sig2","sig3","ArrayReader_1","StringReader","StringReader_1","Uint8ArrayReader","Uint8ArrayReader_1","NodeBufferReader","NodeBufferReader_1","readerFor","crc32fn","MADE_BY_DOS","MADE_BY_UNIX","findCompression","compressionMethod","ZipEntry","loadOptions","localExtraFieldsLength","fileNameLength","madeBy","extraReader","extraFieldId","extraFieldLength","extraFieldValue","decodeParamType","upath","fileNameByteArray","ucomment","commentByteArray","upathField","ucommentField","zipEntry","ZipEntries","expectedSignature","askedIndex","zipComment","decodeContent","extraDataSize","isGarbage","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","zipEntries","checkEntryCRC32","promises","files","unsafeName","safeName","JSZip","newObj","set_data_maybe_contenteditable","div3","div2","p0","label0","input0","label1","input1","raw_value","t4_value","html_tag","t4","button0","button1","func_1","t0_value","if_block0","create_if_block_4","each_value","div0_name_value","div4","div4_name_value","div5","div5_name_value","div6","h2","t0","each_blocks","FOLDER_DEPTH","directories","unfolded","dropFile","filterResources","pattern","foldUnfold","newfile","selected_resources","toggleAll","creating","extension","generateNewfilename","ext","newfilekeydown","waitEditor","downloadFiles","sresources","link","deleteFiles","unzip","zipFile","splitPath","dirname","dropFolder","folder","entries","dropHighlight","inputFiles","blur_handler","dragover_handler","dragleave_handler","click_handler_4","dragover_handler_1","dragleave_handler_1","ul","li","strong","get_directories_and_resources","uploadingFiles","uploadFile","resourceOrDir","overwriting","uploadRequest","overwritingFiles","e_index","div1_class_value","if_block","create_if_block_2","each_value_1","activeSession","readonly","setReadonly","yesno","waitUntil","xp_data","factory","adapters","logger","_adapters$logger","_len","_key","_typeof","classCallCheck","createClass","defineProperties","protoProps","staticProps","secondsSince","clamp","ConnectionMonitor","connection","_constructor$pollInte","multiplier","message_types","protocols","supportedProtocols","Connection","consumer","_ref","allowReconnect","_JSON$parse","identifier","reconnect","extend","Subscription","SubscriptionGuarantor","subscriptions","subscription","Subscriptions","channelName","_this3","_len2","_key2","_this4","Consumer","createWebSocketURL","createConsumer","getConfig","uid","exp_id","result_channel","requests","ResultRequest","stage","connected","current_results","newSubmissionCallbacks","rejectionCallbacks","init_channel","process_next_submission","submissions","submission","columns","eventtime","column_idx","column_refs","old_refs","ref","Results","create_if_block_7","t3_value","em","t3","handle_promise","info","create_if_block_12","td","td_help_value","t_value","t6_value","t8_value","t10_value","t12_value","each_value_4","td0","td1","td2","td3","td4","td5","td6","t6","t8","t10","t12","each_value_3","div0_class_value","input0_value_value","input1_value_value","h20","h21","a0","a1","create_if_block_3","select_disabled_value","if_block2","if_block4","span0","span1","div8","div7","experiment","slug","slug_prod","published","publish","shouldPublish","publishing","togglePublish","xp","copyLink","getDirName","syncing","gitURL","gitBranches","branchTimeout","listBranches","gitFilesToOverwrite","gitSync","branch","added_files","existing_files","gitTransaction","lastDescription","descTimer","updatingDescription","updateDescription","safetext","submission_ids","resultsLink","resultsFileStage","previewStage","submissionIds","downloadingResults","submissionFrom","submissionTo","fetchRows","exclude","needToDL","r2","warned","previewSubmissionIds","refreshPreview","click_handler","click_handler_3","click_handler_5","ids","to_number","checkbox","click_handler_9","click_handler_10","click_handler_12","git","git_index","info_1","div9","div11","div10","promise_1","iframe","iframe_src_value","noframe","updateXpInfo","checkOwnXp","User","loadContent","preview","check_xp_created","embeddedPreviewLink","xpuid","getPreviewLink","openData","forceRefresh","dirs","dMatch","rMatch","rk","resizing","hPercent","pane","wPercent","mousedown_handler","add_render_callback","savingText","timeoutSaving","editName","renaming","cancelRename","TopBar"],"mappings":"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,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,GAAI,MAAO,GAAI,KAAM,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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8BACP,MAAO,IACvB,EAAe,CACC,MAAO,2BACP,MAAO,QACP,KAAM,uBACtB,EAAe,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACtB,EAAe,CACC,aAAc,eACjB,CACJ,EACD,sBAAyB,CACrB,CACI,MAAO,oCACP,MAAO,2CACvB,EAAe,CACC,MAAO,2BACP,MAAO,IACP,KAAM,OACtB,EAAe,CACC,MAAO,2BACP,MAAO,GACvB,EAAe,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACtB,EAAe,CACC,aAAc,+BACjB,CACJ,EACD,kBAAqB,CACjB,CACI,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KAC9B,EAAuB,CACC,QAAS,SACZ,CACJ,CACjB,EAAe,CACC,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KAC9B,EAAuB,CACC,QAAS,UACZ,CACJ,CACjB,EAAe,CACC,MAAO,oBACP,MAAO,6BACvB,EAAe,CACC,MAAO,mBACP,MAAO,8CACvB,EAAe,CACC,MAAO,mBACP,MAAO,8CACvB,EAAe,CACC,MAAO,uBACP,MAAO,IACP,KAAM,oBACtB,EAAe,CACC,MAAO,OACP,MAAO,MACvB,EAAe,CACC,MAAO,uBACP,MAAO,GACvB,EAAe,CACC,MAAO,QACP,MAAO,GACP,KAAM,UACT,CACJ,EACD,mBAAsB,CAClBA,EAAS,oBAAoB,EAC7B,CACI,MAAO,qBACP,MAAOP,CACvB,EAAe,CACC,MAAO,uBACP,MAAO,GACvB,EAAe,CACC,MAAO,OACP,MAAO,MACvB,EAAe,CACC,MAAO,uBACP,MAAO,GACvB,EAAe,CACC,MAAO,QACP,MAAO,GACP,KAAM,UACT,CACJ,EACD,SAAY,CACR,CACI,MAAO,2BACP,MAAOI,CACvB,EAAe,CACC,MAAO,SACP,MAAO,QACP,eAAgB,EAChC,EAAe,CACC,MAAO,SACP,MAAO,MACP,KAAM,UACtB,EAAe,CACC,aAAc,QACjB,CACJ,EACD,QAAW,CACP,CACI,MAAO,2BACP,MAAOA,CACvB,EAAe,C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AAe,CACC,MAAO,aACP,MAAOL,CACvB,EAAe,CACC,MAAO,GACP,MAAO,QACP,KAAM,UACT,CACJ,EACD,MAAS,CACLD,EAAyB,aAAa,WAAW,EACjDQ,EAAS,OAAO,EAChB,CACI,MAAO,gBACP,MAAO,MACP,KAAM,OACtB,EAAe,CACC,MAAO,OACP,MAAO,UACP,KAAM,OACtB,EAAe,CACC,MAAO,QACP,MAAO,GACP,KAAM,UACT,CACJ,EACD,MAAS,CACL,CACI,MAAO,0BACP,MAAO,2CACvB,EAAe,CACC,MAAO,gBACP,MAAO,cACP,KAAM,UACtB,EAAe,CACC,MAAO,UACP,MAAO,+CACvB,EAAe,CACC,MAAO,2BACP,MAAO,+CACvB,EAAe,CACC,MAAO,8BACP,MAAO,IACvB,EAAe,CACC,MAAO,2BACP,MAAO,QACP,KAAM,uBACtB,EAAe,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACtB,EAAe,CACC,aAAc,eACjB,CACJ,EACD,sBAAyB,CACrB,CACI,MAAO,oCACP,MAAO,2CACvB,EAAe,CACC,MAAO,2BACP,MAAO,IACP,KAAM,OACtB,EAAe,CACC,MAAO,2BACP,MAAO,GACvB,EAAe,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACtB,EAAe,CACC,aAAc,+BACjB,CACJ,EACD,kBAAqB,CACjB,CACI,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KAC9B,EAAuB,CACC,QAAS,SACZ,CACJ,CACjB,EAAe,CACC,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KAC9B,EAAuB,CACC,QAAS,UACZ,CACJ,CACjB,EAAe,CACC,MAAO,oBACP,MAAO,6BACvB,EAAe,CACC,MAAO,mBACP,MAAO,8CACvB,EAAe,CACC,MAAO,mBACP,MAAO,8CACvB,EAAe,CACC,MAAO,uBACP,MAAO,IACP,KAAM,oBACtB,EAAe,CACC,MAAO,OACP,MAAO,MACvB,EAAe,CACC,MAAO,uBACP,MAAO,GACvB,EAAe,CACC,MAAO,QACP,MAAO,GACP,KA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,89]}