@mc20230601/keep-up 1.0.18 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/codeEditor/index.d.ts +11 -11
- package/es/{packages/components → components}/codeEditor/index.mjs +3 -3
- package/es/components/codeEditor/index.mjs.map +1 -0
- package/es/components/commonDrawer/index.d.ts +28 -15
- package/es/{packages/components → components}/commonDrawer/index.mjs +11 -4
- package/es/components/commonDrawer/index.mjs.map +1 -0
- package/es/components/commonEditor/constants.d.ts +17 -0
- package/es/components/commonEditor/constants.mjs +16 -0
- package/es/components/commonEditor/constants.mjs.map +1 -0
- package/es/components/commonEditor/index.d.ts +181 -0
- package/es/components/commonEditor/index.mjs +193 -0
- package/es/components/commonEditor/index.mjs.map +1 -0
- package/es/components/commonEditor/index.module.mjs +4 -0
- package/es/components/commonEditor/index.module.mjs.map +1 -0
- package/es/components/commonEditor/interfaces.d.ts +46 -0
- package/es/components/commonEditor/interfaces.mjs +2 -0
- package/es/components/commonEditor/interfaces.mjs.map +1 -0
- package/es/components/commonEditor/useModeMap.d.ts +4 -0
- package/es/components/commonEditor/useModeMap.mjs +17 -0
- package/es/components/commonEditor/useModeMap.mjs.map +1 -0
- package/es/components/commonFilter/constants.d.ts +2 -0
- package/es/components/commonFilter/constants.mjs +4 -0
- package/es/components/commonFilter/constants.mjs.map +1 -0
- package/es/components/commonFilter/index.d.ts +107 -0
- package/es/components/commonFilter/index.mjs +103 -0
- package/es/components/commonFilter/index.mjs.map +1 -0
- package/es/components/commonFilter/index.module.mjs +4 -0
- package/es/components/commonFilter/index.module.mjs.map +1 -0
- package/es/components/commonFilter/interfaces.d.ts +75 -0
- package/es/components/commonFilter/interfaces.mjs +2 -0
- package/es/components/commonFilter/interfaces.mjs.map +1 -0
- package/es/components/commonFilter/props.d.ts +31 -0
- package/es/components/commonFilter/props.mjs +30 -0
- package/es/components/commonFilter/props.mjs.map +1 -0
- package/es/components/commonFilter/useCollapse.d.ts +2 -0
- package/es/components/commonFilter/useCollapse.mjs +29 -0
- package/es/components/commonFilter/useCollapse.mjs.map +1 -0
- package/es/components/commonFilter/useFieldsParser.d.ts +5 -0
- package/es/components/commonFilter/useFieldsParser.mjs +34 -0
- package/es/components/commonFilter/useFieldsParser.mjs.map +1 -0
- package/es/components/commonFilter/useKeepFilter.d.ts +3 -0
- package/es/components/commonFilter/useKeepFilter.mjs +36 -0
- package/es/components/commonFilter/useKeepFilter.mjs.map +1 -0
- package/es/components/commonFilter/utils.d.ts +3 -0
- package/es/components/commonFilter/utils.mjs +14 -0
- package/es/components/commonFilter/utils.mjs.map +1 -0
- package/es/components/commonJsonPretty/index.d.ts +31 -0
- package/es/components/commonJsonPretty/index.mjs +26 -0
- package/es/components/commonJsonPretty/index.mjs.map +1 -0
- package/es/components/commonLocations/constants.d.ts +28 -0
- package/es/components/commonLocations/constants.mjs +18 -0
- package/es/components/commonLocations/constants.mjs.map +1 -0
- package/es/components/commonLocations/index.d.ts +40 -0
- package/es/components/commonLocations/index.mjs +94 -0
- package/es/components/commonLocations/index.mjs.map +1 -0
- package/es/components/commonLocations/index.module.mjs +4 -0
- package/es/components/commonLocations/index.module.mjs.map +1 -0
- package/es/components/commonLocations/interfaces.d.ts +100 -0
- package/es/components/commonLocations/interfaces.mjs +2 -0
- package/es/components/commonLocations/interfaces.mjs.map +1 -0
- package/es/components/commonLocations/useLocations.d.ts +2 -0
- package/es/components/commonLocations/useLocations.mjs +151 -0
- package/es/components/commonLocations/useLocations.mjs.map +1 -0
- package/es/components/commonLocations/utils.d.ts +14 -0
- package/es/components/commonLocations/utils.mjs +73 -0
- package/es/components/commonLocations/utils.mjs.map +1 -0
- package/es/components/commonModal/index.d.ts +30 -0
- package/es/components/commonModal/index.mjs +56 -0
- package/es/components/commonModal/index.mjs.map +1 -0
- package/es/components/commonModal/index.module.mjs +4 -0
- package/es/components/commonModal/index.module.mjs.map +1 -0
- package/es/components/commonModal/interfaces.d.ts +7 -0
- package/es/components/commonModal/interfaces.mjs +2 -0
- package/es/components/commonModal/interfaces.mjs.map +1 -0
- package/es/components/commonPage/constants.d.ts +18 -0
- package/es/components/commonPage/constants.mjs +16 -0
- package/es/components/commonPage/constants.mjs.map +1 -0
- package/es/components/commonPage/index.d.ts +256 -0
- package/es/components/commonPage/index.mjs +461 -0
- package/es/components/commonPage/index.mjs.map +1 -0
- package/es/components/commonPage/index.module.mjs +4 -0
- package/es/components/commonPage/index.module.mjs.map +1 -0
- package/es/components/commonPage/interfaces.d.ts +113 -0
- package/es/components/commonPage/interfaces.mjs +2 -0
- package/es/components/commonPage/interfaces.mjs.map +1 -0
- package/es/components/commonPage/useAsyncDataSource.d.ts +4 -0
- package/es/components/commonPage/useAsyncDataSource.mjs +39 -0
- package/es/components/commonPage/useAsyncDataSource.mjs.map +1 -0
- package/es/components/commonPage/useLayout.d.ts +6 -0
- package/es/components/commonPage/useLayout.mjs +37 -0
- package/es/components/commonPage/useLayout.mjs.map +1 -0
- package/es/components/commonPage/usePage.d.ts +4 -0
- package/es/components/commonPage/usePage.mjs +64 -0
- package/es/components/commonPage/usePage.mjs.map +1 -0
- package/es/components/commonPage/usePageActions.d.ts +2 -0
- package/es/components/commonPage/usePageActions.mjs +66 -0
- package/es/components/commonPage/usePageActions.mjs.map +1 -0
- package/es/components/commonPage/usePagePreferences.d.ts +3 -0
- package/es/components/commonPage/usePagePreferences.mjs +54 -0
- package/es/components/commonPage/usePagePreferences.mjs.map +1 -0
- package/es/components/commonPage/utils.d.ts +4 -0
- package/es/components/commonPage/utils.mjs +11 -0
- package/es/components/commonPage/utils.mjs.map +1 -0
- package/es/components/commonSetter/components/draggableList/index.d.ts +31 -0
- package/es/components/commonSetter/components/draggableList/index.mjs +113 -0
- package/es/components/commonSetter/components/draggableList/index.mjs.map +1 -0
- package/es/components/commonSetter/components/draggableList/index.module.mjs +4 -0
- package/es/components/commonSetter/components/draggableList/index.module.mjs.map +1 -0
- package/es/components/commonSetter/constants.d.ts +7 -0
- package/es/components/commonSetter/constants.mjs +10 -0
- package/es/components/commonSetter/constants.mjs.map +1 -0
- package/es/components/commonSetter/index.d.ts +31 -0
- package/es/components/commonSetter/index.mjs +108 -0
- package/es/components/commonSetter/index.mjs.map +1 -0
- package/es/components/commonSetter/index.module.mjs +4 -0
- package/es/components/commonSetter/index.module.mjs.map +1 -0
- package/es/components/commonTable/constants.d.ts +11 -0
- package/es/components/commonTable/constants.mjs +14 -0
- package/es/components/commonTable/constants.mjs.map +1 -0
- package/es/components/commonTable/index.d.ts +132 -0
- package/es/components/commonTable/index.mjs +140 -0
- package/es/components/commonTable/index.mjs.map +1 -0
- package/es/components/commonTable/index.module.mjs +4 -0
- package/es/components/commonTable/index.module.mjs.map +1 -0
- package/es/components/commonTable/interfaces.d.ts +54 -0
- package/es/components/commonTable/interfaces.mjs +2 -0
- package/es/components/commonTable/interfaces.mjs.map +1 -0
- package/es/components/commonTable/props.d.ts +71 -0
- package/es/components/commonTable/props.mjs +72 -0
- package/es/components/commonTable/props.mjs.map +1 -0
- package/es/components/commonTable/usePagination.d.ts +3 -0
- package/es/components/commonTable/usePagination.mjs +41 -0
- package/es/components/commonTable/usePagination.mjs.map +1 -0
- package/es/components/commonTable/utils.d.ts +3 -0
- package/es/components/commonTable/utils.mjs +17 -0
- package/es/components/commonTable/utils.mjs.map +1 -0
- package/es/components/elIconPlus/index.d.ts +15 -0
- package/es/components/elIconPlus/index.mjs +31 -0
- package/es/components/elIconPlus/index.mjs.map +1 -0
- package/es/components/formTabs/index.d.ts +35 -0
- package/es/components/formTabs/index.mjs +60 -0
- package/es/components/formTabs/index.mjs.map +1 -0
- package/es/components/formilyCmps/formTab/index.d.ts +83 -0
- package/es/components/formilyCmps/formTab/index.mjs +146 -0
- package/es/components/formilyCmps/formTab/index.mjs.map +1 -0
- package/es/components/formilyCmps/formilyForm/constants.d.ts +39 -0
- package/es/components/formilyCmps/formilyForm/constants.mjs +41 -0
- package/es/components/formilyCmps/formilyForm/constants.mjs.map +1 -0
- package/es/components/formilyCmps/formilyForm/index.d.ts +131 -0
- package/es/components/formilyCmps/formilyForm/index.mjs +148 -0
- package/es/components/formilyCmps/formilyForm/index.mjs.map +1 -0
- package/es/components/formilyCmps/formilyForm/index.module.mjs +4 -0
- package/es/components/formilyCmps/formilyForm/index.module.mjs.map +1 -0
- package/es/components/formilyCmps/formilyForm/interfaces.d.ts +28 -0
- package/es/components/formilyCmps/formilyForm/interfaces.mjs +2 -0
- package/es/components/formilyCmps/formilyForm/interfaces.mjs.map +1 -0
- package/es/components/formilyCmps/formilyForm/utils.d.ts +3 -0
- package/es/components/formilyCmps/formilyForm/utils.mjs +14 -0
- package/es/components/formilyCmps/formilyForm/utils.mjs.map +1 -0
- package/es/components/formilyCmps/index.d.ts +3 -0
- package/es/components/formilyCmps/index.mjs +3 -0
- package/es/components/formilyCmps/sectionTitle/index.d.ts +28 -0
- package/es/components/formilyCmps/sectionTitle/index.mjs +30 -0
- package/es/components/formilyCmps/sectionTitle/index.mjs.map +1 -0
- package/es/components/formilyCmps/sectionTitle/index.module.mjs +4 -0
- package/es/components/formilyCmps/sectionTitle/index.module.mjs.map +1 -0
- package/es/components/fragment/index.d.ts +4 -0
- package/es/components/fragment/index.mjs +16 -0
- package/es/components/fragment/index.mjs.map +1 -0
- package/es/components/iconFont/index.d.ts +36 -0
- package/es/components/iconFont/index.mjs +44 -0
- package/es/components/iconFont/index.mjs.map +1 -0
- package/es/components/index.d.ts +22 -0
- package/es/components/index.mjs +21 -0
- package/es/{packages/interfaces → components}/index.mjs.map +1 -1
- package/es/components/radioGroup/constants.d.ts +371 -0
- package/es/components/radioGroup/constants.mjs +11 -0
- package/es/components/radioGroup/constants.mjs.map +1 -0
- package/es/components/radioGroup/index.d.ts +203 -0
- package/es/components/radioGroup/index.mjs +60 -0
- package/es/components/radioGroup/index.mjs.map +1 -0
- package/es/components/radioGroup/interfaces.d.ts +7 -0
- package/es/components/radioGroup/interfaces.mjs +2 -0
- package/es/components/radioGroup/interfaces.mjs.map +1 -0
- package/es/components/space/index.d.ts +61 -0
- package/es/components/space/index.mjs +59 -0
- package/es/components/space/index.mjs.map +1 -0
- package/es/components/upload/formilyUpload.d.ts +73 -0
- package/es/components/upload/formilyUpload.mjs +90 -0
- package/es/components/upload/formilyUpload.mjs.map +1 -0
- package/es/components/upload/index.d.ts +271 -0
- package/es/components/upload/index.mjs +22 -0
- package/es/components/upload/index.mjs.map +1 -0
- package/es/components/upload/index.module.mjs +4 -0
- package/es/components/upload/index.module.mjs.map +1 -0
- package/es/components/upload/modalUpload.d.ts +36 -0
- package/es/components/upload/modalUpload.mjs +67 -0
- package/es/components/upload/modalUpload.mjs.map +1 -0
- package/es/components/upload/upload.d.ts +76 -0
- package/es/components/upload/upload.mjs +91 -0
- package/es/components/upload/upload.mjs.map +1 -0
- package/es/constants/common.d.ts +1 -1
- package/es/constants/common.mjs.map +1 -0
- package/es/index.d.ts +17 -1
- package/es/index.mjs +20 -2
- package/es/index.mjs.map +1 -1
- package/es/styles/index.css +298 -0
- package/es/utils/common.d.ts +1 -1
- package/es/utils/common.mjs.map +1 -0
- package/es/{packages/utils → utils}/emitter.mjs +1 -1
- package/es/utils/emitter.mjs.map +1 -0
- package/es/utils/shared.mjs.map +1 -0
- package/es/utils/storage.mjs.map +1 -0
- package/package.json +1 -2
- package/es/_virtual/ace.mjs +0 -4
- package/es/_virtual/ace.mjs.map +0 -1
- package/es/_virtual/mode-javascript.mjs +0 -4
- package/es/_virtual/mode-javascript.mjs.map +0 -1
- package/es/_virtual/theme-monokai.mjs +0 -4
- package/es/_virtual/theme-monokai.mjs.map +0 -1
- package/es/constants/index.d.ts +0 -0
- package/es/node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/ace.mjs +0 -21889
- package/es/node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/ace.mjs.map +0 -1
- package/es/node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/mode-javascript.mjs +0 -1186
- package/es/node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/mode-javascript.mjs.map +0 -1
- package/es/node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/theme-monokai.mjs +0 -22
- package/es/node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/theme-monokai.mjs.map +0 -1
- package/es/node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs +0 -4
- package/es/node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs.map +0 -1
- package/es/packages/components/codeEditor/index.mjs.map +0 -1
- package/es/packages/components/commonDrawer/index.mjs.map +0 -1
- package/es/packages/components/index.mjs +0 -3
- package/es/packages/constants/common.mjs.map +0 -1
- package/es/packages/interfaces/index.mjs +0 -2
- package/es/packages/utils/common.mjs.map +0 -1
- package/es/packages/utils/emitter.mjs.map +0 -1
- package/es/packages/utils/shared.mjs.map +0 -1
- package/es/packages/utils/storage.mjs.map +0 -1
- /package/es/{packages/components → components}/commonDrawer/index.module.mjs +0 -0
- /package/es/{packages/components → components}/commonDrawer/index.module.mjs.map +0 -0
- /package/es/{packages/components → components}/commonDrawer/interfaces.mjs +0 -0
- /package/es/{packages/components → components}/commonDrawer/interfaces.mjs.map +0 -0
- /package/es/{packages/components → components/formilyCmps}/index.mjs.map +0 -0
- /package/es/{packages/constants → constants}/common.mjs +0 -0
- /package/es/{packages/interfaces → interfaces}/common.mjs +0 -0
- /package/es/{packages/interfaces → interfaces}/common.mjs.map +0 -0
- /package/es/{packages/interfaces → interfaces}/commonPage.mjs +0 -0
- /package/es/{packages/interfaces → interfaces}/commonPage.mjs.map +0 -0
- /package/es/{packages/constants → interfaces}/index.mjs +0 -0
- /package/es/{packages/constants → interfaces}/index.mjs.map +0 -0
- /package/es/{packages/utils → utils}/common.mjs +0 -0
- /package/es/{packages/utils → utils}/index.mjs +0 -0
- /package/es/{packages/utils → utils}/index.mjs.map +0 -0
- /package/es/{packages/utils → utils}/shared.mjs +0 -0
- /package/es/{packages/utils → utils}/storage.mjs +0 -0
package/es/node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/ace.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ace.mjs","sources":["../../../../../../../../../node_modules/.pnpm/ace-builds@1.43.5/node_modules/ace-builds/src-noconflict/ace.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(/</g, \"<\");\n};\nexports.getMatchOffsets = function (string, regExp) {\n var matches = [];\n string.replace(regExp, function (str) {\n matches.push({\n offset: arguments[arguments.length - 2],\n length: str.length\n });\n });\n return matches;\n};\nexports.deferredCall = function (fcn) {\n var timer = null;\n var callback = function () {\n timer = null;\n fcn();\n };\n var deferred = function (timeout) {\n deferred.cancel();\n timer = setTimeout(callback, timeout || 0);\n return deferred;\n };\n deferred.schedule = deferred;\n deferred.call = function () {\n this.cancel();\n fcn();\n return deferred;\n };\n deferred.cancel = function () {\n clearTimeout(timer);\n timer = null;\n return deferred;\n };\n deferred.isPending = function () {\n return timer;\n };\n return deferred;\n};\nexports.delayedCall = function (fcn, defaultTimeout) {\n var timer = null;\n var callback = function () {\n timer = null;\n fcn();\n };\n var _self = function (timeout) {\n if (timer == null)\n timer = setTimeout(callback, timeout || defaultTimeout);\n };\n _self.delay = function (timeout) {\n timer && clearTimeout(timer);\n timer = setTimeout(callback, timeout || defaultTimeout);\n };\n _self.schedule = _self;\n _self.call = function () {\n this.cancel();\n fcn();\n };\n _self.cancel = function () {\n timer && clearTimeout(timer);\n timer = null;\n };\n _self.isPending = function () {\n return timer;\n };\n return _self;\n};\nexports.supportsLookbehind = function () {\n try {\n new RegExp('(?<=.)');\n }\n catch (e) {\n return false;\n }\n return true;\n};\nexports.skipEmptyMatch = function (line, last, supportsUnicodeFlag) {\n return supportsUnicodeFlag && line.codePointAt(last) > 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 ? document.createElementNS(ns || XHTML_NS, tag) : 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.$fixPositionBug = function (el) {\n var rect = el.getBoundingClientRect();\n if (el.style.left) {\n var target = parseFloat(el.style.left);\n var result = +rect.left;\n if (Math.abs(target - result) > 1) {\n el.style.left = 2 * target - result + \"px\";\n }\n }\n if (el.style.right) {\n var target = parseFloat(el.style.right);\n var result = window.innerWidth - rect.right;\n if (Math.abs(target - result) > 1) {\n el.style.right = 2 * target - result + \"px\";\n }\n }\n if (el.style.top) {\n var target = parseFloat(el.style.top);\n var result = +rect.top;\n if (Math.abs(target - result) > 1) {\n el.style.top = 2 * target - result + \"px\";\n }\n }\n if (el.style.bottom) {\n var target = parseFloat(el.style.bottom);\n var result = window.innerHeight - rect.bottom;\n if (Math.abs(target - result) > 1) {\n el.style.bottom = 2 * target - result + \"px\";\n }\n }\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 gutter\",\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 \"gutter.annotation.aria-label.security\": \"Security finding, read annotations row $0\",\n \"gutter.annotation.aria-label.hint\": \"Suggestion, read annotations row $0\",\n \"gutter-tooltip.aria-label.security.singular\": \"security finding\",\n \"gutter-tooltip.aria-label.security.plural\": \"security findings\",\n \"gutter-tooltip.aria-label.hint.singular\": \"suggestion\",\n \"gutter-tooltip.aria-label.hint.plural\": \"suggestions\",\n \"editor.tooltip.disable-editing\": \"Editing is disabled\"\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 optionNames = Object.keys(optionNames);\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 messages with id \" + messages.$id + \", 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.43.5\";\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<scripts.length; i++) {\n var script = scripts[i];\n\n var src = script.src || script.getAttribute(\"src\");\n if (!src)\n continue;\n\n var attributes = script.attributes;\n for (var j=0, l=attributes.length; j < l; j++) {\n var attr = attributes[j];\n if (attr.name.indexOf(\"data-ace-\") === 0) {\n scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/, \"\"))] = attr.value;\n }\n }\n\n var m = src.match(/^(.*)\\/ace([\\-.]\\w+)?\\.js(\\?|$)/);\n if (m)\n scriptUrl = m[1];\n }\n\n if (scriptUrl) {\n scriptOptions.base = scriptOptions.base || scriptUrl;\n scriptOptions.packaged = true;\n }\n\n scriptOptions.basePath = scriptOptions.base;\n scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;\n scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;\n scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;\n delete scriptOptions.base;\n\n for (var key in scriptOptions)\n if (typeof scriptOptions[key] !== \"undefined\")\n config.set(key, scriptOptions[key]);\n}\n\nfunction deHyphenate(str) {\n return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); });\n}\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Range = /** @class */ (function () {\n function Range(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n this.end = {\n row: endRow,\n column: endColumn\n };\n }\n Range.prototype.isEqual = function (range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n Range.prototype.toString = function () {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = 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, 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 = /** @class */ (function () {\n function TextInput(parentNode, host) {\n var _this = this;\n this.host = host;\n this.text = dom.createElement(\"textarea\");\n this.text.className = \"ace_text-input\";\n this.text.setAttribute(\"wrap\", \"off\");\n this.text.setAttribute(\"autocomplete\", \"off\");\n this.text.setAttribute(\"autocorrect\", \"off\");\n this.text.setAttribute(\"autocapitalize\", \"off\");\n this.text.setAttribute(\"spellcheck\", \"false\");\n this.text.style.opacity = \"0\";\n parentNode.insertBefore(this.text, parentNode.firstChild); this.copied = false;\n this.pasted = false;\n this.inComposition = false;\n this.sendingText = false;\n this.tempStyle = '';\n if (!isMobile)\n this.text.style.fontSize = \"1px\";\n this.commandMode = false;\n this.ignoreFocusEvents = false;\n this.lastValue = \"\";\n this.lastSelectionStart = 0;\n this.lastSelectionEnd = 0;\n this.lastRestoreEnd = 0;\n this.rowStart = Number.MAX_SAFE_INTEGER;\n this.rowEnd = Number.MIN_SAFE_INTEGER;\n this.numberOfExtraLines = 0;\n try {\n this.$isFocused = document.activeElement === this.text;\n }\n catch (e) {\n }\n this.cancelComposition = this.cancelComposition.bind(this);\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(this.text, \"blur\", function (e) {\n if (_this.ignoreFocusEvents)\n return;\n host.onBlur(e);\n _this.$isFocused = false;\n }, host);\n event.addListener(this.text, \"focus\", function (e) {\n if (_this.ignoreFocusEvents)\n return;\n _this.$isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) {\n }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(_this.resetSelection.bind(_this));\n else\n _this.resetSelection();\n }, host); this.$focusScroll = false;\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 (_this.inComposition && isUserAction) {\n _this.lastValue = _this.text.value = \"\";\n _this.onCompositionEnd();\n }\n _this.resetSelection();\n });\n host.on(\"changeSelection\", this.setAriaLabel.bind(this));\n this.resetSelection = isIOS ? this.$resetSelectionIOS : this.$resetSelection;\n if (this.$isFocused)\n host.onFocus();\n this.inputHandler = null;\n this.afterContextMenu = false;\n event.addCommandKeyListener(this.text, function (e, hashId, keyCode) {\n if (_this.inComposition)\n return;\n return host.onCommandKey(e, hashId, keyCode);\n }, host);\n event.addListener(this.text, \"select\", this.onSelect.bind(this), host);\n event.addListener(this.text, \"input\", this.onInput.bind(this), host);\n event.addListener(this.text, \"cut\", this.onCut.bind(this), host);\n event.addListener(this.text, \"copy\", this.onCopy.bind(this), host);\n event.addListener(this.text, \"paste\", this.onPaste.bind(this), host);\n if (!('oncut' in this.text) || !('oncopy' in this.text) || !('onpaste' in this.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 _this.onCopy(e);\n break;\n case 86:\n _this.onPaste(e);\n break;\n case 88:\n _this.onCut(e);\n break;\n }\n }, host);\n }\n this.syncComposition = lang.delayedCall(this.onCompositionUpdate.bind(this), 50).schedule.bind(null, null); //TODO: check this\n event.addListener(this.text, \"compositionstart\", this.onCompositionStart.bind(this), host);\n event.addListener(this.text, \"compositionupdate\", this.onCompositionUpdate.bind(this), host);\n event.addListener(this.text, \"keyup\", this.onKeyup.bind(this), host);\n event.addListener(this.text, \"keydown\", this.syncComposition.bind(this), host);\n event.addListener(this.text, \"compositionend\", this.onCompositionEnd.bind(this), host);\n this.closeTimeout;\n event.addListener(this.text, \"mouseup\", this.$onContextMenu.bind(this), host);\n event.addListener(this.text, \"mousedown\", function (e) {\n e.preventDefault();\n _this.onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", this.$onContextMenu.bind(this), host);\n event.addListener(this.text, \"contextmenu\", this.$onContextMenu.bind(this), host);\n if (isIOS)\n this.addIosSelectionHandler(parentNode, host, this.text);\n }\n TextInput.prototype.addIosSelectionHandler = function (parentNode, host, text) {\n var _this = this;\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 || _this.inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (_this.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 > _this.lastSelectionEnd && _this.lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < _this.lastSelectionStart && _this.lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < _this.lastSelectionStart || (selectionStart == _this.lastSelectionStart\n && _this.lastSelectionEnd != _this.lastSelectionStart && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > _this.lastSelectionEnd && _this.lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > _this.lastSelectionEnd && _this.lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > _this.lastSelectionEnd || (selectionEnd == _this.lastSelectionEnd\n && _this.lastSelectionEnd != _this.lastSelectionStart && 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 _this.lastSelectionStart = selectionStart;\n _this.lastSelectionEnd = selectionEnd;\n _this.resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n };\n TextInput.prototype.onContextMenuClose = function () {\n var _this = this;\n clearTimeout(this.closeTimeout);\n this.closeTimeout = setTimeout(function () {\n if (_this.tempStyle) {\n _this.text.style.cssText = _this.tempStyle;\n _this.tempStyle = '';\n }\n _this.host.renderer.$isMousePressed = false;\n if (_this.host.renderer.$keepTextAreaAtCursor)\n _this.host.renderer.$moveTextAreaToCursor();\n }, 0);\n };\n TextInput.prototype.$onContextMenu = function (e) {\n this.host.textInput.onContextMenu(e);\n this.onContextMenuClose();\n };\n TextInput.prototype.onKeyup = function (e) {\n if (e.keyCode == 27 && this.text.value.length < this.text.selectionStart) {\n if (!this.inComposition)\n this.lastValue = this.text.value;\n this.lastSelectionStart = this.lastSelectionEnd = -1;\n this.resetSelection();\n }\n this.syncComposition();\n };\n TextInput.prototype.cancelComposition = function () {\n this.ignoreFocusEvents = true;\n this.text.blur();\n this.text.focus();\n this.ignoreFocusEvents = false;\n };\n TextInput.prototype.onCompositionStart = function (e) {\n if (this.inComposition || !this.host.onCompositionStart || this.host.$readOnly)\n return;\n this.inComposition = {};\n if (this.commandMode)\n return;\n if (e.data)\n this.inComposition.useTextareaForIME = false;\n setTimeout(this.onCompositionUpdate.bind(this), 0);\n this.host._signal(\"compositionStart\");\n this.host.on(\"mousedown\", this.cancelComposition); //TODO:\n var range = this.host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n this.inComposition.markerRange = range;\n this.inComposition.selectionStart = this.lastSelectionStart;\n this.host.onCompositionStart(this.inComposition);\n if (this.inComposition.useTextareaForIME) {\n this.lastValue = this.text.value = \"\";\n this.lastSelectionStart = 0;\n this.lastSelectionEnd = 0;\n }\n else {\n if (this.text.msGetInputContext)\n this.inComposition.context = this.text.msGetInputContext();\n if (this.text.getInputContext)\n this.inComposition.context = this.text.getInputContext();\n }\n };\n TextInput.prototype.onCompositionUpdate = function () {\n if (!this.inComposition || !this.host.onCompositionUpdate || this.host.$readOnly)\n return;\n if (this.commandMode)\n return this.cancelComposition();\n if (this.inComposition.useTextareaForIME) {\n this.host.onCompositionUpdate(this.text.value);\n }\n else {\n var data = this.text.value;\n this.sendText(data);\n if (this.inComposition.markerRange) {\n if (this.inComposition.context) {\n this.inComposition.markerRange.start.column = this.inComposition.selectionStart = this.inComposition.context.compositionStartOffset;\n }\n this.inComposition.markerRange.end.column = this.inComposition.markerRange.start.column\n + this.lastSelectionEnd - this.inComposition.selectionStart + this.lastRestoreEnd;\n }\n }\n };\n TextInput.prototype.onCompositionEnd = function (e) {\n if (!this.host.onCompositionEnd || this.host.$readOnly)\n return;\n this.inComposition = false;\n this.host.onCompositionEnd();\n this.host.off(\"mousedown\", this.cancelComposition);\n if (e)\n this.onInput();\n };\n TextInput.prototype.onCut = function (e) {\n this.doCopy(e, true);\n };\n TextInput.prototype.onCopy = function (e) {\n this.doCopy(e, false);\n };\n TextInput.prototype.onPaste = function (e) {\n var data = this.handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n this.host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(this.resetSelection);\n event.preventDefault(e);\n }\n else {\n this.text.value = \"\";\n this.pasted = true;\n }\n };\n TextInput.prototype.doCopy = function (e, isCut) {\n var _this = this;\n var data = this.host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (this.handleClipboardData(e, data)) {\n if (isIOS) {\n this.resetSelection(data);\n this.copied = data;\n setTimeout(function () {\n _this.copied = false;\n }, 10);\n }\n isCut ? this.host.onCut() : this.host.onCopy();\n event.preventDefault(e);\n }\n else {\n this.copied = true;\n this.text.value = data;\n this.text.select();\n setTimeout(function () {\n _this.copied = false;\n _this.resetSelection();\n isCut ? _this.host.onCut() : _this.host.onCopy();\n });\n }\n };\n TextInput.prototype.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 this.handleClipboardData(e, data, true);\n }\n };\n TextInput.prototype.onInput = function (e) {\n if (this.inComposition)\n return this.onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return this.host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return this.host.execCommand(\"redo\");\n }\n var data = this.text.value;\n var inserted = this.sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100 || valueResetRegex.test(inserted) || isMobile && this.lastSelectionStart\n < 1 && this.lastSelectionStart == this.lastSelectionEnd) {\n this.resetSelection();\n }\n };\n TextInput.prototype.sendText = function (value, fromInput) {\n if (this.afterContextMenu)\n this.afterContextMenu = false;\n if (this.pasted) {\n this.resetSelection();\n if (value)\n this.host.onPaste(value);\n this.pasted = false;\n return \"\";\n }\n else {\n var selectionStart = this.text.selectionStart;\n var selectionEnd = this.text.selectionEnd;\n var extendLeft = this.lastSelectionStart;\n var extendRight = this.lastValue.length - this.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 && this.lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && this.lastValue.length - i > this.lastSelectionStart - 1\n && this.lastValue[this.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 this.sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || this.commandMode) {\n this.host.onTextInput(inserted);\n }\n else {\n this.host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n this.sendingText = false;\n this.lastValue = value;\n this.lastSelectionStart = selectionStart;\n this.lastSelectionEnd = selectionEnd;\n this.lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n TextInput.prototype.onSelect = function (e) {\n var _this = this;\n if (this.inComposition)\n return;\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= _this.lastValue.length && text.value\n === _this.lastValue && _this.lastValue && text.selectionEnd !== _this.lastSelectionEnd;\n };\n if (this.copied) {\n this.copied = false;\n }\n else if (isAllSelected(this.text)) {\n this.host.selectAll();\n this.resetSelection();\n }\n else if (isMobile && this.text.selectionStart != this.lastSelectionStart) {\n this.resetSelection();\n }\n };\n TextInput.prototype.$resetSelectionIOS = function (value) {\n if (!this.$isFocused || (this.copied && !value) || this.sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != this.text.value)\n this.text.value = this.lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (this.host.selection.isEmpty() ? 0 : 1));\n if (this.lastSelectionStart != selectionStart || this.lastSelectionEnd != selectionEnd) {\n this.text.setSelectionRange(selectionStart, selectionEnd);\n }\n this.lastSelectionStart = selectionStart;\n this.lastSelectionEnd = selectionEnd;\n };\n TextInput.prototype.$resetSelection = function () {\n var _this = this;\n if (this.inComposition || this.sendingText)\n return;\n if (!this.$isFocused && !this.afterContextMenu)\n return;\n this.inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - _this.rowStart && i < 2 * _this.numberOfExtraLines + 1; i++) {\n selection += _this.host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n if (this.host.session) {\n var selection = this.host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === this.rowEnd + 1) {\n this.rowStart = this.rowEnd + 1;\n this.rowEnd = this.rowStart + 2 * this.numberOfExtraLines;\n }\n else if (row === this.rowStart - 1) {\n this.rowEnd = this.rowStart - 1;\n this.rowStart = this.rowEnd - 2 * this.numberOfExtraLines;\n }\n else if (row < this.rowStart - 1 || row > this.rowEnd + 1) {\n this.rowStart = row > this.numberOfExtraLines ? row - this.numberOfExtraLines : 0;\n this.rowEnd = row > this.numberOfExtraLines ? row + this.numberOfExtraLines : 2\n * this.numberOfExtraLines;\n }\n var lines = [];\n for (var i = this.rowStart; i <= this.rowEnd; i++) {\n lines.push(this.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 < this.rowStart) {\n var prevLine = this.host.session.getLine(this.rowStart - 1);\n selectionStart = range.start.row < this.rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > this.rowEnd) {\n var nextLine = this.host.session.getLine(this.rowEnd + 1);\n selectionEnd = range.end.row > this.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 != this.lastValue) {\n this.text.value = this.lastValue = newValue;\n this.lastSelectionStart = this.lastSelectionEnd = newValue.length;\n }\n }\n if (this.afterContextMenu) {\n this.lastSelectionStart = this.text.selectionStart;\n this.lastSelectionEnd = this.text.selectionEnd;\n }\n if (this.lastSelectionEnd != selectionEnd || this.lastSelectionStart != selectionStart || this.text.selectionEnd\n != this.lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n this.text.setSelectionRange(selectionStart, selectionEnd);\n this.lastSelectionStart = selectionStart;\n this.lastSelectionEnd = selectionEnd;\n }\n catch (e) {\n }\n }\n this.inComposition = false;\n };\n TextInput.prototype.setHost = function (newHost) {\n this.host = newHost;\n };\n TextInput.prototype.setNumberOfExtraLines = function (number) {\n this.rowStart = Number.MAX_SAFE_INTEGER;\n this.rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n this.numberOfExtraLines = 0;\n return;\n }\n this.numberOfExtraLines = number;\n };\n TextInput.prototype.setAriaLabel = function () {\n var ariaLabel = \"\";\n if (this.host.$textInputAriaLabel) {\n ariaLabel += \"\".concat(this.host.$textInputAriaLabel, \", \");\n }\n if (this.host.session) {\n var row = this.host.session.selection.cursor.row;\n ariaLabel += nls(\"text-input.aria-label\", \"Cursor at row $0\", [row + 1]);\n }\n this.text.setAttribute(\"aria-label\", ariaLabel);\n };\n TextInput.prototype.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n this.text.setAttribute(\"aria-haspopup\", \"true\");\n this.text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n this.text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n this.text.setAttribute(\"aria-haspopup\", \"false\");\n this.text.setAttribute(\"aria-autocomplete\", \"both\");\n this.text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n this.text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n this.text.setAttribute(\"aria-roledescription\", nls(\"text-input.aria-roledescription\", \"editor\"));\n this.setAriaLabel();\n }\n };\n TextInput.prototype.focus = function () {\n var _this = this;\n this.setAriaOptions({\n setLabel: this.host.renderer.enableKeyboardAccessibility\n });\n if (this.tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return this.text.focus({ preventScroll: true });\n var top = this.text.style.top;\n this.text.style.position = \"fixed\";\n this.text.style.top = \"0px\";\n try {\n var isTransformed = this.text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = this.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 this.text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n _this.text.style.position = \"\";\n if (_this.text.style.top == \"0px\")\n _this.text.style.top = top;\n }, 0);\n };\n TextInput.prototype.blur = function () {\n this.text.blur();\n };\n TextInput.prototype.isFocused = function () {\n return this.$isFocused;\n };\n TextInput.prototype.setInputHandler = function (cb) {\n this.inputHandler = cb;\n };\n TextInput.prototype.getInputHandler = function () {\n return this.inputHandler;\n };\n TextInput.prototype.getElement = function () {\n return this.text;\n };\n TextInput.prototype.setCommandMode = function (value) {\n this.commandMode = value;\n this.text.readOnly = false;\n };\n TextInput.prototype.setReadOnly = function (readOnly) {\n if (!this.commandMode)\n this.text.readOnly = readOnly;\n };\n TextInput.prototype.setCopyWithEmptySelection = function (value) {\n };\n TextInput.prototype.onContextMenu = function (e) {\n this.afterContextMenu = true;\n this.resetSelection();\n this.host._emit(\"nativecontextmenu\", {\n target: this.host,\n domEvent: e\n });\n this.moveToMouse(e, true);\n };\n TextInput.prototype.moveToMouse = function (e, bringToFront) {\n var _this = this;\n if (!this.tempStyle)\n this.tempStyle = this.text.style.cssText;\n this.text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\") + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (this.lastSelectionStart + this.lastSelectionEnd) * this.host.renderer.characterWidth\n * 0.5 + \"px;\";\n var rect = this.host.container.getBoundingClientRect();\n var style = dom.computedStyle(this.host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(style.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - this.text.clientHeight - 2;\n var move = function (e) {\n dom.translate(_this.text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n this.host.renderer.$isMousePressed = true;\n clearTimeout(this.closeTimeout);\n if (useragent.isWin)\n event.capture(this.host.container, move, this.onContextMenuClose.bind(this));\n };\n TextInput.prototype.destroy = function () {\n if (this.text.parentElement)\n this.text.parentElement.removeChild(this.text);\n };\n return TextInput;\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, editor.session);\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, editor.session);\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, session) {\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 = 3 * cursor.column - 2 * session.getLine(range.start.row).length;\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/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/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 if (this.theme) {\n this.theme.isDark && dom.removeCssClass(this.getElement(), \"ace_dark\");\n this.theme.cssClass && dom.removeCssClass(this.getElement(), this.theme.cssClass);\n }\n if (theme.isDark) {\n dom.addCssClass(this.getElement(), \"ace_dark\");\n }\n if (theme.cssClass) {\n dom.addCssClass(this.getElement(), theme.cssClass);\n }\n this.theme = {\n isDark: theme.isDark,\n cssClass: theme.cssClass\n };\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 var target = editor.renderer.getMouseEventTarget();\n if (target && typeof target.removeEventListener === \"function\") {\n target.addEventListener(\"mouseout\", this.onMouseOut, true);\n }\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n var target = editor.renderer.getMouseEventTarget();\n if (target && typeof target.removeEventListener === \"function\") {\n target.removeEventListener(\"mouseout\", this.onMouseOut, true);\n }\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 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.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 this.$setPosition(editor, position, true, range);\n dom.$fixPositionBug(element);\n };\n HoverTooltip.prototype.$setPosition = function (editor, position, withMarker, range) {\n var MARGIN = 10;\n withMarker && this.addMarker(range, editor.session);\n var renderer = editor.renderer;\n var element = this.getElement();\n var labelHeight = element.offsetHeight;\n var labelWidth = element.offsetWidth;\n var anchorTop = position.pageY;\n var anchorLeft = position.pageX;\n var spaceBelow = window.innerHeight - anchorTop - renderer.lineHeight;\n var isAbove = this.$shouldPlaceAbove(labelHeight, anchorTop, spaceBelow - MARGIN);\n element.style.maxHeight = (isAbove ? anchorTop : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : anchorTop + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - anchorTop + \"px\" : \"\";\n element.style.left = Math.min(anchorLeft, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.$shouldPlaceAbove = function (labelHeight, anchorTop, spaceBelow) {\n return !(anchorTop - labelHeight < 0 && anchorTop < spaceBelow);\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 && this.$fromKeyboard && e.type == \"keydown\") {\n if (e.code == \"Escape\") {\n return;\n }\n }\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.$fromKeyboard = false;\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/mouse/mouse_event\",\"ace/tooltip\",\"ace/config\",\"ace/range\"], 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 MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar HoverTooltip = require(\"../tooltip\").HoverTooltip;\nvar nls = require(\"../config\").nls;\nvar Range = require(\"../range\").Range;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n mouseHandler.$tooltip = new GutterTooltip(editor);\n mouseHandler.$tooltip.addToEditor(editor);\n mouseHandler.$tooltip.setDataProvider(function (e, editor) {\n var row = e.getDocumentPosition().row;\n mouseHandler.$tooltip.showTooltip(row);\n });\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}\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.id = \"gt\" + (++GutterTooltip.$uid);\n _this.editor = editor;\n _this.visibleTooltipRow;\n var el = _this.getElement();\n el.setAttribute(\"role\", \"tooltip\");\n el.setAttribute(\"id\", _this.id);\n el.style.pointerEvents = \"auto\";\n _this.idleTime = 50;\n _this.onDomMouseMove = _this.onDomMouseMove.bind(_this);\n _this.onDomMouseOut = _this.onDomMouseOut.bind(_this);\n _this.setClassName(\"ace_gutter-tooltip\");\n return _this;\n }\n GutterTooltip.prototype.onDomMouseMove = function (domEvent) {\n var aceEvent = new MouseEvent(domEvent, this.editor);\n this.onMouseMove(aceEvent, this.editor);\n };\n GutterTooltip.prototype.onDomMouseOut = function (domEvent) {\n var aceEvent = new MouseEvent(domEvent, this.editor);\n this.onMouseOut(aceEvent);\n };\n GutterTooltip.prototype.addToEditor = function (editor) {\n var gutter = editor.renderer.$gutter;\n gutter.addEventListener(\"mousemove\", this.onDomMouseMove);\n gutter.addEventListener(\"mouseout\", this.onDomMouseOut);\n _super.prototype.addToEditor.call(this, editor);\n };\n GutterTooltip.prototype.removeFromEditor = function (editor) {\n var gutter = editor.renderer.$gutter;\n gutter.removeEventListener(\"mousemove\", this.onDomMouseMove);\n gutter.removeEventListener(\"mouseout\", this.onDomMouseOut);\n _super.prototype.removeFromEditor.call(this, editor);\n };\n GutterTooltip.prototype.destroy = function () {\n if (this.editor) {\n this.removeFromEditor(this.editor);\n }\n _super.prototype.destroy.call(this);\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 security: {\n singular: nls(\"gutter-tooltip.aria-label.security.singular\", \"security finding\"),\n plural: nls(\"gutter-tooltip.aria-label.security.plural\", \"security findings\")\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 hint: {\n singular: nls(\"gutter-tooltip.aria-label.hint.singular\", \"suggestion\"),\n plural: nls(\"gutter-tooltip.aria-label.hint.plural\", \"suggestions\")\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 = {\n displayText: Array.from(annotationsInRow.displayText),\n type: Array.from(annotationsInRow.type)\n };\n else\n annotation = { displayText: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], security: [], warning: [], info: [], hint: [] };\n var severityRank = { error: 1, security: 2, warning: 3, info: 4, hint: 5 };\n var mostSevereAnnotationTypeInFold;\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 (!mostSevereAnnotationTypeInFold ||\n severityRank[annotationType] < severityRank[mostSevereAnnotationTypeInFold]) {\n mostSevereAnnotationTypeInFold = annotationType;\n }\n }\n }\n if ([\"error\", \"security\", \"warning\"].includes(mostSevereAnnotationTypeInFold)) {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.displayText.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationTypeInFold + \"_fold\");\n }\n }\n if (annotation.displayText.length === 0)\n return this.hide();\n var annotationMessages = { error: [], security: [], warning: [], info: [], hint: [] };\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 = dom.createElement(\"span\");\n annotationMessages.error.forEach(function (el) { return tooltipElement.appendChild(el); });\n annotationMessages.security.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 annotationMessages.hint.forEach(function (el) { return tooltipElement.appendChild(el); });\n tooltipElement.setAttribute(\"aria-live\", \"polite\");\n var annotationNode = this.$findLinkedAnnotationNode(row);\n if (annotationNode) {\n annotationNode.setAttribute(\"aria-describedby\", this.id);\n }\n var range = Range.fromPoints({ row: row, column: 0 }, { row: row, column: 0 });\n this.showForRange(this.editor, range, tooltipElement);\n this.visibleTooltipRow = row;\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.$setPosition = function (editor, _ignoredPosition, _withMarker, range) {\n var gutterCell = this.$findCellByRow(range.start.row);\n if (!gutterCell)\n return;\n var el = gutterCell && gutterCell.element;\n var anchorEl = el && (el.querySelector(\".ace_gutter_annotation\"));\n if (!anchorEl)\n return;\n var r = anchorEl.getBoundingClientRect();\n if (!r)\n return;\n var position = {\n pageX: r.right,\n pageY: r.top\n };\n return _super.prototype.$setPosition.call(this, editor, position, false, range);\n };\n GutterTooltip.prototype.$shouldPlaceAbove = function (labelHeight, anchorTop, spaceBelow) {\n return spaceBelow < labelHeight;\n };\n GutterTooltip.prototype.$findLinkedAnnotationNode = function (row) {\n var cell = this.$findCellByRow(row);\n if (cell) {\n var element = cell.element;\n if (element.childNodes.length > 2) {\n return element.childNodes[2];\n }\n }\n };\n GutterTooltip.prototype.$findCellByRow = function (row) {\n return this.editor.renderer.$gutterLayer.$lines.cells.find(function (el) { return el.row === row; });\n };\n GutterTooltip.prototype.hide = function (e) {\n if (!this.isOpen) {\n return;\n }\n this.$element.removeAttribute(\"aria-live\");\n if (this.visibleTooltipRow != undefined) {\n var annotationNode = this.$findLinkedAnnotationNode(this.visibleTooltipRow);\n if (annotationNode) {\n annotationNode.removeAttribute(\"aria-describedby\");\n }\n }\n this.visibleTooltipRow = undefined;\n this.editor._signal(\"hideGutterTooltip\", this);\n _super.prototype.hide.call(this, e);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = [\"error\", \"security\", \"warning\", \"info\", \"hint\"];\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 GutterTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var rect = editor.renderer.$gutter.getBoundingClientRect();\n return !(e.clientX >= rect.left && e.clientX <= rect.right &&\n e.clientY >= rect.top && e.clientY <= rect.bottom);\n };\n return GutterTooltip;\n}(HoverTooltip));\nGutterTooltip.$uid = 0;\nexports.GutterTooltip = GutterTooltip;\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 continueCapture = true;\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 continueCapture = false;\n if (editor.session)\n onCaptureUpdate();\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 onCaptureUpdate = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n var onCaptureInterval = function () {\n if (continueCapture) {\n onCaptureUpdate();\n event.nextFrame(onCaptureInterval);\n }\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 onCaptureInterval();\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 if (this.$tooltip)\n this.$tooltip.destroy();\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});\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/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/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 this.docLen = 0;\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;\n var end = config.lastRow;\n var renderedMarkerRanges = {};\n var _search = session.$editor && session.$editor.$search;\n var mtSearch = _search && _search.$isMultilineSearch(session.$editor.getLastSearchOptions());\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null || session.getValue().length != this.docLen) {\n if (mtSearch) {\n ranges = [];\n var match = _search.$multiLineForward(session, this.regExp, i, end);\n if (match) {\n var end_row = match.endRow <= end ? match.endRow - 1 : end;\n if (end_row > i)\n i = end_row;\n ranges.push(new Range(match.startRow, match.startCol, match.endRow, match.endCol));\n }\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n }\n else {\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 }\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n if (ranges.length === 0)\n continue;\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 this.docLen = session.getValue().length;\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 (tryToUnfold) {\n var foldLine = this.getFoldLine(cursor.row);\n if (foldLine)\n this.expandFolds(foldLine.folds);\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 if (range.start.row == range.end.row && range.start.column > range.end.column)\n return;\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 depth--;\n if (depth < 0) { //found closing tag\n iterator.stepBackward();\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2); //Range for </\n token = iterator.stepForward();\n var closeTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n if (token.type.indexOf('tag-close') === -1) {\n token = iterator.stepForward();\n }\n if (token && token.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 iterator.stepForward();\n var closeTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n if (token.type.indexOf('tag-close') === -1) {\n token = iterator.stepForward();\n }\n if (!token || token.value !== \">\")\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 === '</') {\n depth--;\n }\n }\n }\n else if (token.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/line_widgets\",\"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 LineWidgets = require(\"./line_widgets\").LineWidgets;\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.$editor = null;\n this.prevOp = {};\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.$gutterCustomWidgets = {};\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.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.selection.on(\"changeCursor\", this.$onSelectionChange);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n this.$initOperationListeners();\n }\n EditSession.prototype.$initOperationListeners = function () {\n var _this = this;\n this.curOp = null;\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 }, 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 }, true);\n this.$operationResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n };\n EditSession.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command) {\n return;\n }\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n commandEvent = {};\n }\n this.$operationResetTimer.schedule();\n this.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n this._signal(\"startOperation\", commandEvent);\n };\n EditSession.prototype.endOperation = function (e) {\n if (this.curOp) {\n if (e && e.returnValue === false) {\n this.curOp = null;\n this._signal(\"endOperation\", e);\n return;\n }\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\") {\n return;\n }\n var currentSelection = this.selection.toJSON();\n this.curOp.selectionAfter = currentSelection;\n this.$lastSel = this.selection.toJSON();\n this.getUndoManager().addSelection(currentSelection);\n this._signal(\"beforeEndOperation\");\n this.prevOp = this.curOp;\n this.curOp = null;\n this._signal(\"endOperation\", e);\n }\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 Object.defineProperty(EditSession.prototype, \"widgetManager\", {\n get: function () {\n var widgetManager = new LineWidgets(this);\n this.widgetManager = widgetManager;\n if (this.$editor)\n widgetManager.attach(this.$editor);\n return widgetManager;\n },\n set: function (value) {\n Object.defineProperty(this, \"widgetManager\", {\n writable: true,\n enumerable: true,\n configurable: true,\n value: value,\n });\n },\n enumerable: false,\n configurable: true\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.onSelectionChange = function () {\n this._signal(\"changeSelection\");\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.removeGutterCustomWidget = function (row) {\n if (this.$editor) {\n this.$editor.renderer.$gutterLayer.$removeCustomWidget(row);\n }\n };\n EditSession.prototype.addGutterCustomWidget = function (row, attributes) {\n if (this.$editor) {\n this.$editor.renderer.$gutterLayer.$addCustomWidget(row, attributes);\n }\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.destroyed) {\n return;\n }\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.endOperation();\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n if (this.selection) {\n this.selection.off(\"changeCursor\", this.$onSelectionChange);\n this.selection.off(\"changeSelection\", this.$onSelectionChange);\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 matches, i = 0; i < lines.length; i++) {\n if (this.$isMultilineSearch(options)) {\n var lng = lines.length - 1;\n matches = this.$multiLineForward(session, re, i, lng);\n if (matches) {\n var end_row = matches.endRow <= lng ? matches.endRow - 1 : lng;\n if (end_row > i)\n i = end_row;\n ranges.push(new Range(matches.startRow, matches.startCol, matches.endRow, matches.endCol));\n }\n }\n else {\n 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 }\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.parseReplaceString = function (replaceString) {\n var CharCode = {\n DollarSign: 36,\n Ampersand: 38,\n Digit0: 48,\n Digit1: 49,\n Digit9: 57,\n Backslash: 92,\n n: 110,\n t: 116\n };\n var replacement = '';\n for (var i = 0, len = replaceString.length; i < len; i++) {\n var chCode = replaceString.charCodeAt(i);\n if (chCode === CharCode.Backslash) {\n i++;\n if (i >= len) {\n replacement += \"\\\\\";\n break;\n }\n var nextChCode = replaceString.charCodeAt(i);\n switch (nextChCode) {\n case CharCode.Backslash:\n replacement += \"\\\\\";\n break;\n case CharCode.n:\n replacement += \"\\n\";\n break;\n case CharCode.t:\n replacement += \"\\t\";\n break;\n }\n continue;\n }\n if (chCode === CharCode.DollarSign) {\n i++;\n if (i >= len) {\n replacement += \"$\";\n break;\n }\n var nextChCode_1 = replaceString.charCodeAt(i);\n if (nextChCode_1 === CharCode.DollarSign) {\n replacement += \"$$\";\n continue;\n }\n if (nextChCode_1 === CharCode.Digit0 || nextChCode_1 === CharCode.Ampersand) {\n replacement += \"$&\";\n continue;\n }\n if (CharCode.Digit1 <= nextChCode_1 && nextChCode_1 <= CharCode.Digit9) {\n replacement += \"$\" + replaceString[i];\n continue;\n }\n }\n replacement += replaceString[i];\n }\n return replacement || replaceString;\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 mtSearch = this.$isMultilineSearch(options);\n if (mtSearch)\n input = input.replace(/\\r\\n|\\r|\\n/g, \"\\n\");\n var match = re.exec(input);\n if (!match || (!mtSearch && match[0].length != input.length))\n return null;\n replacement = options.regExp\n ? this.parseReplaceString(replacement)\n : replacement.replace(/\\$/g, \"$$$$\");\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.$isMultilineSearch = function (options) {\n return options.re && /\\\\r\\\\n|\\\\r|\\\\n/.test(options.re.source) && options.regExp && !options.$isMultiLine;\n };\n Search.prototype.$multiLineForward = function (session, re, start, last) {\n var line, chunk = chunkEnd(session, start);\n for (var row = start; row <= last;) {\n for (var i = 0; i < chunk; i++) {\n if (row > last)\n break;\n var next = session.getLine(row++);\n line = line == null ? next : line + \"\\n\" + next;\n }\n var match = re.exec(line);\n re.lastIndex = 0;\n if (match) {\n var beforeMatch = line.slice(0, match.index).split(\"\\n\");\n var matchedText = match[0].split(\"\\n\");\n var startRow = start + beforeMatch.length - 1;\n var startCol = beforeMatch[beforeMatch.length - 1].length;\n var endRow = startRow + matchedText.length - 1;\n var endCol = matchedText.length == 1\n ? startCol + matchedText[0].length\n : matchedText[matchedText.length - 1].length;\n return {\n startRow: startRow,\n startCol: startCol,\n endRow: endRow,\n endCol: endCol\n };\n }\n }\n return null;\n };\n Search.prototype.$multiLineBackward = function (session, re, endIndex, start, first) {\n var line, chunk = chunkEnd(session, start), endMargin = session.getLine(start).length - endIndex;\n for (var row = start; row >= first;) {\n for (var i = 0; i < chunk && row >= first; i++) {\n var next = session.getLine(row--);\n line = line == null ? next : next + \"\\n\" + line;\n }\n var match = multiLineBackwardMatch(line, re, endMargin);\n if (match) {\n var beforeMatch = line.slice(0, match.index).split(\"\\n\");\n var matchedText = match[0].split(\"\\n\");\n var startRow = row + beforeMatch.length;\n var startCol = beforeMatch[beforeMatch.length - 1].length;\n var endRow = startRow + matchedText.length - 1;\n var endCol = matchedText.length == 1\n ? startCol + matchedText[0].length\n : matchedText[matchedText.length - 1].length;\n return {\n startRow: startRow,\n startCol: startCol,\n endRow: endRow,\n endCol: endCol\n };\n }\n }\n return null;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var mtSearch = this.$isMultilineSearch(options);\n var mtForward = this.$multiLineForward;\n var mtBackward = this.$multiLineBackward;\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 if (mtSearch) {\n var pos = mtBackward(session, re, endIndex, row, firstRow);\n if (!pos)\n return false;\n if (callback(pos.startRow, pos.startCol, pos.endRow, pos.endCol))\n return true;\n }\n else {\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 }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n re.lastIndex = startIndex;\n if (mtSearch) {\n var pos = mtForward(session, re, row, lastRow);\n if (pos) {\n var end_row = pos.endRow <= lastRow ? pos.endRow - 1 : lastRow;\n if (end_row > row)\n row = end_row;\n }\n if (!pos)\n return false;\n if (callback(pos.startRow, pos.startCol, pos.endRow, pos.endCol))\n return true;\n }\n else {\n var line = session.getLine(row);\n var last;\n var m;\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 }\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}\nfunction multiLineBackwardMatch(line, re, endMargin) {\n var match = null;\n var from = 0;\n while (from <= line.length) {\n re.lastIndex = from;\n var newMatch = re.exec(line);\n if (!newMatch)\n break;\n var end = newMatch.index + newMatch[0].length;\n if (end > line.length - endMargin)\n break;\n if (!match || end > match.index + match[0].length)\n match = newMatch;\n from = newMatch.index + 1;\n }\n return match;\n}\nfunction chunkEnd(session, start) {\n var base = 5000, startPosition = { row: start, column: 0 }, startIndex = session.doc.positionToIndex(startPosition), targetIndex = startIndex + base, targetPosition = session.doc.indexToPosition(targetIndex), targetLine = targetPosition.row;\n return targetLine + 1;\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 var e = { editor: editor, command: command, args: args };\n if (!this.canExecute(command, editor)) {\n this._signal(\"commandUnavailable\", e);\n return false;\n }\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/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\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 = this.editor.$mouseHandler.$tooltip;\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.hide();\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 nearestFoldLaneWidgetIndex = this.$findNearestFoldLaneWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldLaneWidgetIndex === null && nearestAnnotationIndex === null)\n return;\n var futureActiveRowIndex = this.$findClosestNumber(nearestFoldLaneWidgetIndex, nearestAnnotationIndex, index);\n if (futureActiveRowIndex === nearestFoldLaneWidgetIndex) {\n this.activeLane = \"fold\";\n this.activeRowIndex = nearestFoldLaneWidgetIndex;\n if (this.$isCustomWidgetVisible(nearestFoldLaneWidgetIndex)) {\n this.$focusCustomWidget(this.activeRowIndex);\n return;\n }\n else {\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n else {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(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 var row = this.$rowIndexToRow(this.activeRowIndex);\n var customWidget = this.editor.session.$gutterCustomWidgets[row];\n if (customWidget) {\n if (customWidget.callbacks && customWidget.callbacks.onClick) {\n customWidget.callbacks.onClick(e, row);\n }\n }\n else if (this.gutterLayer.session.foldWidgets[row] === 'start') {\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(\n function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== row) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(row);\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 this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n this.annotationTooltip.$fromKeyboard = true;\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 this.$blurCustomWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hide();\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.$isCustomWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = !!this.$getCustomWidget(index);\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.$getCustomWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[3];\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.$findNearestFoldLaneWidget = function (index) {\n if (this.$isCustomWidgetVisible(index))\n return 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.$isCustomWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isCustomWidgetVisible(index + i))\n return index + 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.$focusCustomWidget = function (index) {\n if (index == null)\n return;\n var customWidget = this.$getCustomWidget(index);\n if (customWidget) {\n customWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n customWidget.focus();\n }\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.$blurCustomWidget = function (index) {\n var customWidget = this.$getCustomWidget(index);\n if (customWidget) {\n customWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n customWidget.blur();\n }\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) || this.$isCustomWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.$blurCustomWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n if (this.$isFoldWidgetVisible(index)) {\n this.$focusFoldWidget(this.activeRowIndex);\n }\n else {\n this.$focusCustomWidget(this.activeRowIndex);\n }\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) || this.$isCustomWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.$blurCustomWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n if (this.$isFoldWidgetVisible(index)) {\n this.$focusFoldWidget(this.activeRowIndex);\n }\n else {\n this.$focusCustomWidget(this.activeRowIndex);\n }\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.$findClosestNumber = function (num1, num2, target) {\n if (num1 === null)\n return num2;\n if (num2 === null)\n return num1;\n return (Math.abs(target - num1) <= Math.abs(target - num2)) ? num1 : num2;\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.$blurCustomWidget(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 foldLaneWidgetIndex = this.$findNearestFoldLaneWidget(this.activeRowIndex);\n if (foldLaneWidgetIndex === null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldLaneWidgetIndex;\n if (this.$isCustomWidgetVisible(foldLaneWidgetIndex)) {\n this.$focusCustomWidget(this.activeRowIndex);\n }\n else {\n this.$focusFoldWidget(this.activeRowIndex);\n }\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/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\",\"ace/lib/event\",\"ace/tooltip\"], 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 GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar event = require(\"./lib/event\");\nvar HoverTooltip = require(\"./tooltip\").HoverTooltip;\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.id = \"editor\" + (++Editor.$uid); this.session;\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\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 };\n Editor.prototype.startOperation = function (commandEvent) {\n this.session.startOperation(commandEvent);\n };\n Editor.prototype.endOperation = function (e) {\n this.session.endOperation(e);\n };\n Editor.prototype.onStartOperation = function (commandEvent) {\n this.curOp = this.session.curOp;\n this.curOp.scrollTop = this.renderer.scrollTop;\n this.prevOp = this.session.prevOp;\n if (!commandEvent) {\n this.previousCommand = null;\n }\n };\n Editor.prototype.onEndOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false) {\n this.curOp = null;\n return;\n }\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 this.$lastSel = this.session.selection.toJSON();\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 this.session.off(\"startOperation\", this.$onStartOperation);\n this.session.off(\"endOperation\", this.$onEndOperation);\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.$onStartOperation = this.onStartOperation.bind(this);\n this.session.on(\"startOperation\", this.$onStartOperation);\n this.$onEndOperation = this.onEndOperation.bind(this);\n this.session.on(\"endOperation\", this.$onEndOperation);\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 if (oldSession)\n oldSession.$editor = null;\n session && session._signal(\"changeEditor\", { editor: this });\n if (session)\n session.$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, incluude) {\n this.renderer.setStyle(style, incluude);\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 this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\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 === '</') {\n depth[token.value]--;\n }\n if (depth[token.value] === -1) {\n matchType = 'tag';\n found = true;\n }\n }\n if (!found) {\n prevToken = token;\n tokenCount++;\n token = iterator.stepForward();\n i = 0;\n }\n } while (token && !found);\n if (!matchType)\n return;\n var range, pos;\n if (matchType === 'bracket') {\n range = this.session.getBracketRange(cursor);\n if (!range) {\n range = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + i - 1, iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + i - 1);\n pos = range.start;\n if (expand || pos.row === cursor.row && Math.abs(pos.column - cursor.column)\n < 2)\n range = this.session.getBracketRange(pos);\n }\n }\n else if (matchType === 'tag') {\n if (!token || token.type.indexOf('tag-name') === -1)\n return;\n range = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() - 2, iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() - 2);\n if (range.compare(cursor.row, cursor.column) === 0) {\n var tagsRanges = this.session.getMatchingTags(cursor);\n if (tagsRanges) {\n if (tagsRanges.openTag.contains(cursor.row, cursor.column)) {\n range = tagsRanges.closeTag;\n pos = range.start;\n }\n else {\n range = tagsRanges.openTag;\n if (tagsRanges.closeTag.start.row === cursor.row && tagsRanges.closeTag.start.column\n === cursor.column)\n pos = range.end;\n else\n pos = range.start;\n }\n }\n }\n pos = pos || range.start;\n }\n pos = range && range.cursor || pos;\n if (pos) {\n if (select) {\n if (range && expand) {\n this.selection.setRange(range);\n }\n else if (range && range.isEqual(this.getSelectionRange())) {\n this.clearSelection();\n }\n else {\n this.selection.selectTo(pos.row, pos.column);\n }\n }\n else {\n this.selection.moveTo(pos.row, pos.column);\n }\n }\n };\n Editor.prototype.gotoLine = function (lineNumber, column, animate) {\n this.selection.clearSelection();\n this.session.unfold({ row: lineNumber - 1, column: column || 0 });\n this.exitMultiSelectMode && this.exitMultiSelectMode();\n this.moveCursorTo(lineNumber - 1, column || 0);\n if (!this.isRowFullyVisible(lineNumber - 1))\n this.scrollToLine(lineNumber - 1, true, animate);\n };\n Editor.prototype.navigateTo = function (row, column) {\n this.selection.moveTo(row, column);\n };\n Editor.prototype.navigateUp = function (times) {\n if (this.selection.isMultiLine() && !this.selection.isBackwards()) {\n var selectionStart = this.selection.anchor.getPosition();\n return this.moveCursorToPosition(selectionStart);\n }\n this.selection.clearSelection();\n this.selection.moveCursorBy(-times || -1, 0);\n };\n Editor.prototype.navigateDown = function (times) {\n if (this.selection.isMultiLine() && this.selection.isBackwards()) {\n var selectionEnd = this.selection.anchor.getPosition();\n return this.moveCursorToPosition(selectionEnd);\n }\n this.selection.clearSelection();\n this.selection.moveCursorBy(times || 1, 0);\n };\n Editor.prototype.navigateLeft = function (times) {\n if (!this.selection.isEmpty()) {\n var selectionStart = this.getSelectionRange().start;\n this.moveCursorToPosition(selectionStart);\n }\n else {\n times = times || 1;\n while (times--) {\n this.selection.moveCursorLeft();\n }\n }\n this.clearSelection();\n };\n Editor.prototype.navigateRight = function (times) {\n if (!this.selection.isEmpty()) {\n var selectionEnd = this.getSelectionRange().end;\n this.moveCursorToPosition(selectionEnd);\n }\n else {\n times = times || 1;\n while (times--) {\n this.selection.moveCursorRight();\n }\n }\n this.clearSelection();\n };\n Editor.prototype.navigateLineStart = function () {\n this.selection.moveCursorLineStart();\n this.clearSelection();\n };\n Editor.prototype.navigateLineEnd = function () {\n this.selection.moveCursorLineEnd();\n this.clearSelection();\n };\n Editor.prototype.navigateFileEnd = function () {\n this.selection.moveCursorFileEnd();\n this.clearSelection();\n };\n Editor.prototype.navigateFileStart = function () {\n this.selection.moveCursorFileStart();\n this.clearSelection();\n };\n Editor.prototype.navigateWordRight = function () {\n this.selection.moveCursorWordRight();\n this.clearSelection();\n };\n Editor.prototype.navigateWordLeft = function () {\n this.selection.moveCursorWordLeft();\n this.clearSelection();\n };\n Editor.prototype.replace = function (replacement, options) {\n if (options)\n this.$search.set(options);\n var range = this.$search.find(this.session);\n var replaced = 0;\n if (!range)\n return replaced;\n if (this.$tryReplace(range, replacement)) {\n replaced = 1;\n }\n this.selection.setSelectionRange(range);\n this.renderer.scrollSelectionIntoView(range.start, range.end);\n return replaced;\n };\n Editor.prototype.replaceAll = function (replacement, options) {\n if (options) {\n this.$search.set(options);\n }\n var ranges = this.$search.findAll(this.session);\n var replaced = 0;\n if (!ranges.length)\n return replaced;\n var selection = this.getSelectionRange();\n this.selection.moveTo(0, 0);\n for (var i = ranges.length - 1; i >= 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 this.destroyed = true;\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = [];\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 (/**@type{boolean}*/ readOnly) {\n var _this = this;\n this.textInput.setReadOnly(readOnly);\n if (this.destroyed)\n return;\n this.$resetCursorStyle();\n if (!this.$readOnlyCallback) {\n this.$readOnlyCallback = function (e) {\n var shouldShow = false;\n if (e && e.type == \"keydown\") {\n if (e && e.key && !e.ctrlKey && !e.metaKey) {\n if (e.key == \" \")\n e.preventDefault();\n shouldShow = e.key.length == 1;\n }\n if (!shouldShow)\n return;\n }\n else if (e && e.type !== \"exec\") {\n shouldShow = true;\n }\n if (shouldShow) {\n if (!_this.hoverTooltip) {\n _this.hoverTooltip = new HoverTooltip();\n }\n var domNode = dom.createElement(\"div\");\n domNode.textContent = nls(\"editor.tooltip.disable-editing\", \"Editing is disabled\");\n if (!_this.hoverTooltip.isOpen) {\n _this.hoverTooltip.showForRange(_this, _this.getSelectionRange(), domNode);\n }\n }\n else if (_this.hoverTooltip && _this.hoverTooltip.isOpen) {\n _this.hoverTooltip.hide();\n }\n };\n }\n var textArea = this.textInput.getElement();\n if (readOnly) {\n event.addListener(textArea, \"keydown\", this.$readOnlyCallback, this);\n this.commands.on(\"exec\", this.$readOnlyCallback);\n this.commands.on(\"commandUnavailable\", this.$readOnlyCallback);\n }\n else {\n event.removeListener(textArea, \"keydown\", this.$readOnlyCallback);\n this.commands.off(\"exec\", this.$readOnlyCallback);\n this.commands.off(\"commandUnavailable\", this.$readOnlyCallback);\n if (this.hoverTooltip) {\n this.hoverTooltip.destroy();\n this.hoverTooltip = null;\n }\n }\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 gutter\"));\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 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.$showCursorMarker = null;\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 }\n else if (annoType === \"error\") {\n rowInfo.className = \" ace_error\";\n }\n else if (annoType === \"security\" && !/\\bace_error\\b/.test(rowInfo.className)) {\n rowInfo.className = \" ace_security\";\n }\n else if (annoType === \"warning\" && !/\\bace_(error|security)\\b/.test(rowInfo.className)) {\n rowInfo.className = \" ace_warning\";\n }\n else if (annoType === \"info\" && !rowInfo.className) {\n rowInfo.className = \" ace_info\";\n }\n else if (annoType === \"hint\" && !rowInfo.className) {\n rowInfo.className = \" ace_hint\";\n }\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 if (this.$showCursorMarker && this.$highlightGutterLine)\n this.$updateCursorMarker();\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.$showCursorMarker)\n this.$updateCursorMarker();\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.$updateCursorMarker = function () {\n if (!this.session)\n return;\n var session = this.session;\n if (!this.$highlightElement) {\n this.$highlightElement = dom.createElement(\"div\");\n this.$highlightElement.className = \"ace_gutter-cursor\";\n this.$highlightElement.style.pointerEvents = \"none\";\n this.element.appendChild(this.$highlightElement);\n }\n var pos = session.selection.cursor;\n var config = this.config;\n var lines = this.$lines;\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / lines.canvasHeight);\n var lineTop = session.documentToScreenRow(pos) * config.lineHeight;\n var top = lineTop - (screenPage * lines.canvasHeight);\n dom.setStyle(this.$highlightElement.style, \"height\", config.lineHeight + \"px\");\n dom.setStyle(this.$highlightElement.style, \"top\", top + \"px\");\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 customWidget = element.childNodes[3];\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_security\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_security_fold\";\n }\n else if (this.$annotations[i].className === \" ace_warning\" &&\n foldAnnotationClass !== \" ace_security_fold\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\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\", [\n foldRange.start.row + 1,\n foldRange.end.row + 1\n ]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"gutter.code-folding.closed.aria-label\", \"Toggle code folding, rows $0 through $1\", [\n fold.start.row + 1,\n fold.end.row + 1\n ]));\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 var customWidgetAttributes = this.session.$gutterCustomWidgets[row];\n if (customWidgetAttributes) {\n this.$addCustomWidget(row, customWidgetAttributes, cell);\n }\n else if (customWidget) {\n this.$removeCustomWidget(row, cell);\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\", \"Error, read annotations row $0\", [rowText]);\n break;\n case \" ace_security_fold\":\n ariaLabel = nls(\"gutter.annotation.aria-label.security\", \"Security finding, read annotations row $0\", [rowText]);\n break;\n case \" ace_warning_fold\":\n ariaLabel = nls(\"gutter.annotation.aria-label.warning\", \"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\", \"Error, read annotations row $0\", [rowText]);\n break;\n case \" ace_security\":\n ariaLabel = nls(\"gutter.annotation.aria-label.security\", \"Security finding, read annotations row $0\", [rowText]);\n break;\n case \" ace_warning\":\n ariaLabel = nls(\"gutter.annotation.aria-label.warning\", \"Warning, read annotations row $0\", [rowText]);\n break;\n case \" ace_info\":\n ariaLabel = nls(\"gutter.annotation.aria-label.info\", \"Info, read annotations row $0\", [rowText]);\n break;\n case \" ace_hint\":\n ariaLabel = nls(\"gutter.annotation.aria-label.hint\", \"Suggestion, 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\" && !customWidgetAttributes)\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 if (!highlightGutterLine && this.$highlightElement) {\n this.$highlightElement.remove();\n this.$highlightElement = null;\n }\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.$hideFoldWidget = function (row, cell) {\n var rowCell = cell || this.$getGutterCell(row);\n if (rowCell && rowCell.element) {\n var foldWidget = rowCell.element.childNodes[1];\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n }\n }\n };\n Gutter.prototype.$showFoldWidget = function (row, cell) {\n var rowCell = cell || this.$getGutterCell(row);\n if (rowCell && rowCell.element) {\n var foldWidget = rowCell.element.childNodes[1];\n if (foldWidget && this.session.foldWidgets && this.session.foldWidgets[rowCell.row]) {\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n }\n }\n };\n Gutter.prototype.$getGutterCell = function (row) {\n var cells = this.$lines.cells;\n var min = 0;\n var max = cells.length - 1;\n if (row < cells[0].row || row > cells[max].row)\n return;\n while (min <= max) {\n var mid = Math.floor((min + max) / 2);\n var cell = cells[mid];\n if (cell.row > row) {\n max = mid - 1;\n }\n else if (cell.row < row) {\n min = mid + 1;\n }\n else {\n return cell;\n }\n }\n return cell;\n };\n Gutter.prototype.$addCustomWidget = function (row, _a, cell) {\n var className = _a.className, label = _a.label, title = _a.title, callbacks = _a.callbacks;\n this.session.$gutterCustomWidgets[row] = { className: className, label: label, title: title, callbacks: callbacks };\n this.$hideFoldWidget(row, cell);\n var rowCell = cell || this.$getGutterCell(row);\n if (rowCell && rowCell.element) {\n var customWidget = rowCell.element.querySelector(\".ace_custom-widget\");\n if (customWidget) {\n customWidget.remove();\n }\n customWidget = dom.createElement(\"span\");\n customWidget.className = \"ace_custom-widget \".concat(className);\n customWidget.setAttribute(\"tabindex\", \"-1\");\n customWidget.setAttribute(\"role\", 'button');\n customWidget.setAttribute(\"aria-label\", label);\n customWidget.setAttribute(\"title\", title);\n dom.setStyle(customWidget.style, \"display\", \"inline-block\");\n dom.setStyle(customWidget.style, \"height\", \"inherit\");\n if (callbacks && callbacks.onClick) {\n customWidget.addEventListener(\"click\", function (e) {\n callbacks.onClick(e, row);\n e.stopPropagation();\n });\n }\n rowCell.element.appendChild(customWidget);\n }\n };\n Gutter.prototype.$removeCustomWidget = function (row, cell) {\n delete this.session.$gutterCustomWidgets[row];\n this.$showFoldWidget(row, cell);\n var rowCell = cell || this.$getGutterCell(row);\n if (rowCell && rowCell.element) {\n var customWidget = rowCell.element.querySelector(\".ace_custom-widget\");\n if (customWidget) {\n rowCell.element.removeChild(customWidget);\n }\n }\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 = undefined;\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:\" + padding + \"px;\" + \"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:\" + padding + \"px;\" +\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\\u2060\\u2061\\u2062\\u2063\\u2064\\u206A\\u206B\\u206B\\u206C\\u206D\\u206E\\u206F]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\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 var text = self.$tabStrings[tabSize].cloneNode(true);\n text[\"charCount\"] = 1;\n valueFragment.appendChild(text);\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 + 1;\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 activeIndentGuides = this.element.querySelectorAll(\".ace_indent-guide-active\");\n for (var i = 0; i < activeIndentGuides.length; i++) {\n activeIndentGuides[i].classList.remove(\"ace_indent-guide-active\");\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var element = cell.element;\n if (cell.element.classList && cell.element.classList.contains(\"ace_line_group\")) {\n if (cell.element.childNodes.length > 0) {\n element = cell.element.childNodes[0];\n }\n else {\n return;\n }\n }\n var childNodes = 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 var text = this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element);\n text[\"charCount\"] = 0; // not to take into account when we are counting columns\n lineEl.appendChild(text);\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 ? \"<hide>\" : \"<click to see more...>\";\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<<j) ? \"border-\" + x + \"-radius: 3px;\" : \"\"\n }).filter(Boolean).join(\" \") + \"}\")\n}\nstyles.join(\"\\\\n\")\n*/\nmodule.exports = \"\\n.ace_br1 {border-top-left-radius : 3px;}\\n.ace_br2 {border-top-right-radius : 3px;}\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\n.ace_br4 {border-bottom-right-radius: 3px;}\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\n.ace_br8 {border-bottom-left-radius : 3px;}\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\n\\n\\n.ace_editor {\\n position: relative;\\n overflow: hidden;\\n padding: 0;\\n font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace;\\n direction: ltr;\\n text-align: left;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n forced-color-adjust: none;\\n}\\n\\n.ace_scroller {\\n position: absolute;\\n overflow: hidden;\\n top: 0;\\n bottom: 0;\\n background-color: inherit;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n cursor: text;\\n}\\n\\n.ace_content {\\n position: absolute;\\n box-sizing: border-box;\\n min-width: 100%;\\n contain: style size layout;\\n font-variant-ligatures: no-common-ligatures;\\n}\\n.ace_invisible {\\n font-variant-ligatures: none;\\n}\\n\\n.ace_keyboard-focus:focus {\\n box-shadow: inset 0 0 0 2px #5E9ED6;\\n outline: none;\\n}\\n\\n.ace_dragging .ace_scroller:before{\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n content: '';\\n background: rgba(250, 250, 250, 0.01);\\n z-index: 1000;\\n}\\n.ace_dragging.ace_dark .ace_scroller:before{\\n background: rgba(0, 0, 0, 0.01);\\n}\\n\\n.ace_gutter {\\n position: absolute;\\n overflow : hidden;\\n width: auto;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n cursor: default;\\n z-index: 4;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n contain: style size layout;\\n}\\n\\n.ace_gutter-active-line {\\n position: absolute;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_scroller.ace_scroll-left:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\n pointer-events: none;\\n}\\n\\n.ace_gutter-cell, .ace_gutter-cell_svg-icons {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n padding-left: 19px;\\n padding-right: 6px;\\n background-repeat: no-repeat;\\n}\\n\\n.ace_gutter-cell_svg-icons .ace_gutter_annotation {\\n margin-left: -14px;\\n float: left;\\n}\\n\\n.ace_gutter-cell .ace_gutter_annotation {\\n margin-left: -19px;\\n float: left;\\n}\\n\\n.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold, .ace_gutter-cell.ace_security, .ace_icon.ace_security, .ace_icon.ace_security_fold {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: 2px center;\\n}\\n\\n.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: 2px center;\\n}\\n\\n.ace_gutter-cell.ace_info, .ace_icon.ace_info, .ace_gutter-cell.ace_hint, .ace_icon.ace_hint {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat;\\n background-position: 2px center;\\n}\\n\\n.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info, .ace_dark .ace_gutter-cell.ace_hint, .ace_dark .ace_icon.ace_hint {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_icon_svg.ace_error {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+\\\");\\n background-color: crimson;\\n}\\n.ace_icon_svg.ace_security {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iZGFya29yYW5nZSIgZmlsbD0ibm9uZSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgogICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2UtbGluZWpvaW4tcm91bmQiIGQ9Ik04IDE0LjgzMDdDOCAxNC44MzA3IDIgMTIuOTA0NyAyIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOEM3Ljk4OTk5IDEuMzQ5MTggMTAuNjkgMy4yNjU0OCAxNCAzLjI2NTQ4VjguMDg5OTJDMTQgMTIuOTA0NyA4IDE0LjgzMDcgOCAxNC44MzA3WiIvPgogICAgICAgIDxwYXRoIGQ9Ik0yIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOCIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMy45OSA4LjA4OTkyVjMuMjY1NDhDMTAuNjggMy4yNjU0OCA4IDEuMzQ5MTggOCAxLjM0OTE4Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggNFY5Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggMTBWMTIiLz4KICAgIDwvZz4KPC9zdmc+\\\");\\n background-color: crimson;\\n}\\n.ace_icon_svg.ace_warning {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg==\\\");\\n background-color: darkorange;\\n}\\n.ace_icon_svg.ace_info {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg==\\\");\\n background-color: royalblue;\\n}\\n.ace_icon_svg.ace_hint {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0ic2lsdmVyIiBmaWxsPSJub25lIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTYgMTRIMTAiLz4KICAgICAgICA8cGF0aCBkPSJNOCAxMUg5QzkgOS40NzAwMiAxMiA4LjU0MDAyIDEyIDUuNzYwMDJDMTIuMDIgNC40MDAwMiAxMS4zOSAzLjM2MDAyIDEwLjQzIDIuNjcwMDJDOSAxLjY0MDAyIDcuMDAwMDEgMS42NDAwMiA1LjU3MDAxIDIuNjcwMDJDNC42MTAwMSAzLjM2MDAyIDMuOTggNC40MDAwMiA0IDUuNzYwMDJDNCA4LjU0MDAyIDcuMDAwMDEgOS40NzAwMiA3LjAwMDAxIDExSDhaIi8+CiAgICA8L2c+Cjwvc3ZnPg==\\\");\\n background-color: silver;\\n}\\n\\n.ace_icon_svg.ace_error_fold {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=\\\");\\n background-color: crimson;\\n}\\n.ace_icon_svg.ace_security_fold {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTcgMTQiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTEwLjAwMDEgMTMuNjk5MkMxMC4wMDAxIDEzLjY5OTIgMTEuOTI0MSAxMy40NzYzIDEzIDEyLjY5OTJDMTQuNDEzOSAxMS42NzgxIDE2IDEwLjUgMTYuMTI1MSA2LjgxMTI2VjIuNTg5ODdDMTYuMTI1MSAyLjU0NzY4IDE2LjEyMjEgMi41MDYxOSAxNi4xMTY0IDIuNDY1NTlWMS43MTQ4NUgxNS4yNDE0TDE1LjIzMDcgMS43MTQ4NEwxNC42MjUxIDEuNjk5MjJWNi44MTEyM0MxNC42MjUxIDguNTEwNjEgMTQuNjI1MSA5LjQ2NDYxIDEyLjc4MjQgMTEuNzIxQzEyLjE1ODYgMTIuNDg0OCAxMC4wMDAxIDEzLjY5OTIgMTAuMDAwMSAxMy42OTkyWiIgZmlsbD0iY3JpbXNvbiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuMzM2MDkgMC4zNjc0NzVDNy4wMzIxNCAwLjE1MjY1MiA2LjYyNTQ4IDAuMTUzNjE0IDYuMzIyNTMgMC4zNjk5OTdMNi4zMDg2OSAwLjM3OTU1NEM2LjI5NTUzIDAuMzg4NTg4IDYuMjczODggMC40MDMyNjYgNi4yNDQxNyAwLjQyMjc4OUM2LjE4NDcxIDAuNDYxODYgNi4wOTMyMSAwLjUyMDE3MSA1Ljk3MzEzIDAuNTkxMzczQzUuNzMyNTEgMC43MzQwNTkgNS4zNzk5IDAuOTI2ODY0IDQuOTQyNzkgMS4xMjAwOUM0LjA2MTQ0IDEuNTA5NyAyLjg3NTQxIDEuODgzNzcgMS41ODk4NCAxLjg4Mzc3SDAuNzE0ODQ0VjIuNzU4NzdWNi45ODAxNUMwLjcxNDg0NCA5LjQ5Mzc0IDIuMjg4NjYgMTEuMTk3MyAzLjcwMjU0IDEyLjIxODVDNC40MTg0NSAxMi43MzU1IDUuMTI4NzQgMTMuMTA1MyA1LjY1NzMzIDEzLjM0NTdDNS45MjI4NCAxMy40NjY0IDYuMTQ1NjYgMTMuNTU1OSA2LjMwNDY1IDEzLjYxNjFDNi4zODQyMyAxMy42NDYyIDYuNDQ4MDUgMTMuNjY5IDYuNDkzNDkgMTMuNjg0OEM2LjUxNjIyIDEzLjY5MjcgNi41MzQzOCAxMy42OTg5IDYuNTQ3NjQgMTMuNzAzM0w2LjU2MzgyIDEzLjcwODdMNi41NjkwOCAxMy43MTA0TDYuNTcwOTkgMTMuNzExTDYuODM5ODQgMTMuNzUzM0w2LjU3MjQyIDEzLjcxMTVDNi43NDYzMyAxMy43NjczIDYuOTMzMzUgMTMuNzY3MyA3LjEwNzI3IDEzLjcxMTVMNy4xMDg3IDEzLjcxMUw3LjExMDYxIDEzLjcxMDRMNy4xMTU4NyAxMy43MDg3TDcuMTMyMDUgMTMuNzAzM0M3LjE0NTMxIDEzLjY5ODkgNy4xNjM0NiAxMy42OTI3IDcuMTg2MTkgMTMuNjg0OEM3LjIzMTY0IDEzLjY2OSA3LjI5NTQ2IDEzLjY0NjIgNy4zNzUwMyAxMy42MTYxQzcuNTM0MDMgMTMuNTU1OSA3Ljc1Njg1IDEzLjQ2NjQgOC4wMjIzNiAxMy4zNDU3QzguNTUwOTUgMTMuMTA1MyA5LjI2MTIzIDEyLjczNTUgOS45NzcxNSAxMi4yMTg1QzExLjM5MSAxMS4xOTczIDEyLjk2NDggOS40OTM3NyAxMi45NjQ4IDYuOTgwMThWMi43NTg4QzEyLjk2NDggMi43MTY2IDEyLjk2MTkgMi42NzUxMSAxMi45NTYxIDIuNjM0NTFWMS44ODM3N0gxMi4wODExQzEyLjA3NzUgMS44ODM3NyAxMi4wNzQgMS44ODM3NyAxMi4wNzA0IDEuODgzNzdDMTAuNzk3OSAxLjg4MDA0IDkuNjE5NjIgMS41MTEwMiA4LjczODk0IDEuMTI0ODZDOC43MzUzNCAxLjEyMzI3IDguNzMxNzQgMS4xMjE2OCA4LjcyODE0IDEuMTIwMDlDOC4yOTEwMyAwLjkyNjg2NCA3LjkzODQyIDAuNzM0MDU5IDcuNjk3NzkgMC41OTEzNzNDNy41Nzc3MiAwLjUyMDE3MSA3LjQ4NjIyIDAuNDYxODYgNy40MjY3NiAwLjQyMjc4OUM3LjM5NzA1IDAuNDAzMjY2IDcuMzc1MzkgMC4zODg1ODggNy4zNjIyNCAwLjM3OTU1NEw3LjM0ODk2IDAuMzcwMzVDNy4zNDg5NiAwLjM3MDM1IDcuMzQ4NDcgMC4zNzAwMiA3LjM0NTYzIDAuMzc0MDU0TDcuMzM3NzkgMC4zNjg2NTlMNy4zMzYwOSAwLjM2NzQ3NVpNOC4wMzQ3MSAyLjcyNjkxQzguODYwNCAzLjA5MDYzIDkuOTYwNjYgMy40NjMwOSAxMS4yMDYxIDMuNTg5MDdWNi45ODAxNUgxMS4yMTQ4QzExLjIxNDggOC42Nzk1MyAxMC4xNjM3IDkuOTI1MDcgOC45NTI1NCAxMC43OTk4QzguMzU1OTUgMTEuMjMwNiA3Ljc1Mzc0IDExLjU0NTQgNy4yOTc5NiAxMS43NTI3QzcuMTE2NzEgMTEuODM1MSA2Ljk2MDYyIDExLjg5OTYgNi44Mzk4NCAxMS45NDY5QzYuNzE5MDYgMTEuODk5NiA2LjU2Mjk3IDExLjgzNTEgNi4zODE3MyAxMS43NTI3QzUuOTI1OTUgMTEuNTQ1NCA1LjMyMzczIDExLjIzMDYgNC43MjcxNSAxMC43OTk4QzMuNTE2MDMgOS45MjUwNyAyLjQ2NDg0IDguNjc5NTUgMi40NjQ4NCA2Ljk4MDE4VjMuNTg5MDlDMy43MTczOCAzLjQ2MjM5IDQuODIzMDggMy4wODYzOSA1LjY1MDMzIDIuNzIwNzFDNi4xNDIyOCAyLjUwMzI0IDYuNTQ0ODUgMi4yODUzNyA2LjgzMjU0IDIuMTE2MjRDNy4xMjE4MSAyLjI4NTM1IDcuNTI3IDIuNTAzNTIgOC4wMjE5NiAyLjcyMTMxQzguMDI2MiAyLjcyMzE3IDguMDMwNDUgMi43MjUwNCA4LjAzNDcxIDIuNzI2OTFaTTUuOTY0ODQgMy40MDE0N1Y3Ljc3NjQ3SDcuNzE0ODRWMy40MDE0N0g1Ljk2NDg0Wk01Ljk2NDg0IDEwLjQwMTVWOC42NTE0N0g3LjcxNDg0VjEwLjQwMTVINS45NjQ4NFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=\\\");\\n background-color: crimson;\\n}\\n.ace_icon_svg.ace_warning_fold {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4=\\\");\\n background-color: darkorange;\\n}\\n\\n.ace_scrollbar {\\n contain: strict;\\n position: absolute;\\n right: 0;\\n bottom: 0;\\n z-index: 6;\\n}\\n\\n.ace_scrollbar-inner {\\n position: absolute;\\n cursor: text;\\n left: 0;\\n top: 0;\\n}\\n\\n.ace_scrollbar-v{\\n overflow-x: hidden;\\n overflow-y: scroll;\\n top: 0;\\n}\\n\\n.ace_scrollbar-h {\\n overflow-x: scroll;\\n overflow-y: hidden;\\n left: 0;\\n}\\n\\n.ace_print-margin {\\n position: absolute;\\n height: 100%;\\n}\\n\\n.ace_text-input {\\n position: absolute;\\n z-index: 0;\\n width: 0.5em;\\n height: 1em;\\n opacity: 0;\\n background: transparent;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n resize: none;\\n outline: none;\\n overflow: hidden;\\n font: inherit;\\n padding: 0 1px;\\n margin: 0 -1px;\\n contain: strict;\\n -ms-user-select: text;\\n -moz-user-select: text;\\n -webkit-user-select: text;\\n user-select: text;\\n /*with `pre-line` chrome inserts instead of space*/\\n white-space: pre!important;\\n}\\n.ace_text-input.ace_composition {\\n background: transparent;\\n color: inherit;\\n z-index: 1000;\\n opacity: 1;\\n}\\n.ace_composition_placeholder { color: transparent }\\n.ace_composition_marker { \\n border-bottom: 1px solid;\\n position: absolute;\\n border-radius: 0;\\n margin-top: 1px;\\n}\\n\\n[ace_nocontext=true] {\\n transform: none!important;\\n filter: none!important;\\n clip-path: none!important;\\n mask : none!important;\\n contain: none!important;\\n perspective: none!important;\\n mix-blend-mode: initial!important;\\n z-index: auto;\\n}\\n\\n.ace_layer {\\n z-index: 1;\\n position: absolute;\\n overflow: hidden;\\n /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/\\n word-wrap: normal;\\n white-space: pre;\\n height: 100%;\\n width: 100%;\\n box-sizing: border-box;\\n /* setting pointer-events: auto; on node under the mouse, which changes\\n during scroll, will break mouse wheel scrolling in Safari */\\n pointer-events: none;\\n}\\n\\n.ace_gutter-layer {\\n position: relative;\\n width: auto;\\n text-align: right;\\n pointer-events: auto;\\n height: 1000000px;\\n contain: style size layout;\\n}\\n\\n.ace_text-layer {\\n font: inherit !important;\\n position: absolute;\\n height: 1000000px;\\n width: 1000000px;\\n contain: style size layout;\\n}\\n\\n.ace_text-layer > .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 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(33em, 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, .ace_custom-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 pointer-events: auto;\\n}\\n\\n.ace_custom-widget {\\n background: none;\\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(scrollbarV, renderer) {\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\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 this.setScrollBarV(scrollbarV);\n }\n Decorator.prototype.$createCanvas = function () {\n this.canvas = dom.createElement(\"canvas\");\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = \"7\";\n this.canvas.style.position = \"absolute\";\n };\n Decorator.prototype.setScrollBarV = function (scrollbarV) {\n this.$createCanvas();\n this.scrollbarV = scrollbarV;\n scrollbarV.element.appendChild(this.canvas);\n this.setDimensions();\n };\n Decorator.prototype.$updateDecorators = function (config) {\n if (typeof this.canvas.getContext !== \"function\") {\n return;\n }\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n this.setDimensions(config);\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 for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var offset1 = this.getVerticalOffsetForRow(row);\n var offset2 = offset1 + this.lineHeight;\n var y1 = Math.round(this.heightRatio * offset1);\n var y2 = Math.round(this.heightRatio * offset2);\n var ycenter = Math.round((y1 + y2) / 2);\n var halfHeight = (y2 - ycenter);\n if (halfHeight < this.halfMinDecorationHeight) {\n halfHeight = this.halfMinDecorationHeight;\n }\n if (ycenter - halfHeight < 0) {\n ycenter = halfHeight;\n }\n if (ycenter + halfHeight > this.canvasHeight) {\n ycenter = this.canvasHeight - halfHeight;\n }\n var from = ycenter - halfHeight;\n var to = ycenter + halfHeight;\n var zoneHeight = to - from;\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, from, Math.round(this.oneZoneWidth - 1), zoneHeight);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var currentY = Math.round(this.getVerticalOffsetForRow(cursor.row) * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.getVerticalOffsetForRow = function (row) {\n row = row | 0;\n var offset = this.renderer.session.documentToScreenRow(row, 0) * this.lineHeight;\n return offset;\n };\n Decorator.prototype.setDimensions = function (config) {\n config = config || this.renderer.layerConfig;\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n this.canvasWidth = this.scrollbarV.width || this.canvasWidth;\n this.setZoneWidth();\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n if (this.maxHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n };\n Decorator.prototype.setZoneWidth = function () {\n this.oneZoneWidth = this.canvasWidth;\n };\n Decorator.prototype.destroy = function () {\n this.canvas.parentNode.removeChild(this.canvas);\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 hideScrollbars = size.height <= 2 * this.lineHeight;\n }\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 if (offset < 0 && firstRowScreen > 0) {\n firstRowScreen = Math.max(0, firstRowScreen + Math.floor(offset / lineHeight));\n offset = this.scrollTop - firstRowScreen * lineHeight;\n }\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 if (_self.$gutterLayer) {\n var showGutterCursor = module[\"$showGutterCursorMarker\"];\n if (showGutterCursor && !_self.$gutterLayer.$showCursorMarker) {\n _self.$gutterLayer.$showCursorMarker = \"theme\";\n }\n else if (!showGutterCursor && _self.$gutterLayer.$showCursorMarker == \"theme\") {\n _self.$gutterLayer.$showCursorMarker = null;\n }\n }\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 (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 if (!this.$scrollDecorator) {\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.$scrollDecorator.setScrollBarV(this.scrollBarV);\n this.$scrollDecorator.$updateDecorators();\n }\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/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){/**\n * ## Error Marker extension\n *\n * Provides inline error display functionality for Ace editor. Creates visual error markers that appear as tooltips\n * below editor lines containing annotations (errors, warnings, info). Enables navigation between error locations with\n * keyboard shortcuts and displays context-sensitive messages with proper styling based on annotation severity.\n *\n * @module\n */\n\"use strict\";\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 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;\nvar version = exports.config.version;\nexports.version = 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 "],"names":["define"],"mappings":"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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClE,KAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnD,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvD,KAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnD,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvD,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACjE,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClE,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE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;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAClC,SAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;AAC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"}
|