From 053f4f5113ba597bf6bcee69fd31145baf4bb6af Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 17 Mar 2015 20:25:50 +0100 Subject: [PATCH] Released version 4.1.3, fixes for browserify --- HISTORY.md | 6 + README.md | 4 +- bower.json | 2 +- dist/jsoneditor.js | 2582 ++++++++++++++++++---------------------- dist/jsoneditor.map | 2 +- dist/jsoneditor.min.js | 36 +- package.json | 4 +- src/js/ace/index.js | 9 + src/js/textmode.js | 5 +- 9 files changed, 1173 insertions(+), 1477 deletions(-) create mode 100644 src/js/ace/index.js diff --git a/HISTORY.md b/HISTORY.md index 6ac7555..48d15a8 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -3,6 +3,12 @@ https://github.com/josdejong/jsoneditor +## 2015-03-17, version 4.1.3 + +- Fixed broken bundling with browserify: the `jsonlint` package was requiring + missing dependencies. + + ## 2015-03-15, version 4.1.2 - Fixed broken bower package 4.1.1. diff --git a/README.md b/README.md index 4d3e810..f50aba7 100644 --- a/README.md +++ b/README.md @@ -125,12 +125,12 @@ jsoneditor: The source code of JSONEditor consists of CommonJS modules. To create a custom bundle of the source code, [browserify](http://browserify.org/) can be used: - browserify ./index.js -o ./jsoneditor.custom.js -s JSONEditor --ignore-missing + browserify ./index.js -o ./jsoneditor.custom.js -s JSONEditor The Ace editor, used in mode `code`, accounts for about 75% of the total size of the library. To exclude the Ace editor from the bundle: - browserify ./index.js -o ./jsoneditor.custom.js -s JSONEditor --ignore-missing -x brace -x brace/mode/json -x brace/ext/searchbox + browserify ./index.js -o ./jsoneditor.custom.js -s JSONEditor -x brace -x brace/mode/json -x brace/ext/searchbox To minify the generated bundle, use [uglifyjs](https://github.com/mishoo/UglifyJS2): diff --git a/bower.json b/bower.json index a826deb..74c5f39 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "jsoneditor", - "version": "4.1.2", + "version": "4.1.3", "description": "A web-based tool to view, edit and format JSON", "tags": [ "json", diff --git a/dist/jsoneditor.js b/dist/jsoneditor.js index 9267522..7b84273 100644 --- a/dist/jsoneditor.js +++ b/dist/jsoneditor.js @@ -23,8 +23,8 @@ * Copyright (c) 2011-2015 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 4.1.2 - * @date 2015-03-15 + * @version 4.1.3 + * @date 2015-03-17 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -1101,10 +1101,7 @@ return /******/ (function(modules) { // webpackBootstrap var ace; try { - ace = __webpack_require__(10); - __webpack_require__(11); - __webpack_require__(12); - __webpack_require__(9); + ace = __webpack_require__(9); } catch (err) { // failed to load ace, no problem, we will fall back to plain text @@ -1451,7 +1448,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 3 */ /***/ function(module, exports, __webpack_require__) { - var jsonlint = __webpack_require__(15); + var jsonlint = __webpack_require__(12); /** * Parse JSON using the parser built-in in the browser. @@ -2682,8 +2679,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 7 */ /***/ function(module, exports, __webpack_require__) { - var ContextMenu = __webpack_require__(13); - var appendNodeFactory = __webpack_require__(14); + var ContextMenu = __webpack_require__(10); + var appendNodeFactory = __webpack_require__(11); var util = __webpack_require__(3); /** @@ -5617,7 +5614,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 8 */ /***/ function(module, exports, __webpack_require__) { - var ContextMenu = __webpack_require__(13); + var ContextMenu = __webpack_require__(10); /** * Create a select box to be used in the editor menu's, which allows to switch mode @@ -5721,6 +5718,1125 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 9 */ +/***/ function(module, exports, __webpack_require__) { + + // load brace + var ace = __webpack_require__(14); + + // load required ace modules + __webpack_require__(15); + __webpack_require__(16); + __webpack_require__(13); + + module.exports = ace; + + +/***/ }, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(3); + + /** + * A context menu + * @param {Object[]} items Array containing the menu structure + * TODO: describe structure + * @param {Object} [options] Object with options. Available options: + * {function} close Callback called when the + * context menu is being closed. + * @constructor + */ + function ContextMenu (items, options) { + this.dom = {}; + + var me = this; + var dom = this.dom; + this.anchor = undefined; + this.items = items; + this.eventListeners = {}; + this.selection = undefined; // holds the selection before the menu was opened + this.visibleSubmenu = undefined; + this.onClose = options ? options.close : undefined; + + // create a container element + var menu = document.createElement('div'); + menu.className = 'jsoneditor-contextmenu'; + dom.menu = menu; + + // create a list to hold the menu items + var list = document.createElement('ul'); + list.className = 'menu'; + menu.appendChild(list); + dom.list = list; + dom.items = []; // list with all buttons + + // create a (non-visible) button to set the focus to the menu + var focusButton = document.createElement('button'); + dom.focusButton = focusButton; + var li = document.createElement('li'); + li.style.overflow = 'hidden'; + li.style.height = '0'; + li.appendChild(focusButton); + list.appendChild(li); + + function createMenuItems (list, domItems, items) { + items.forEach(function (item) { + if (item.type == 'separator') { + // create a separator + var separator = document.createElement('div'); + separator.className = 'separator'; + li = document.createElement('li'); + li.appendChild(separator); + list.appendChild(li); + } + else { + var domItem = {}; + + // create a menu item + var li = document.createElement('li'); + list.appendChild(li); + + // create a button in the menu item + var button = document.createElement('button'); + button.className = item.className; + domItem.button = button; + if (item.title) { + button.title = item.title; + } + if (item.click) { + button.onclick = function () { + me.hide(); + item.click(); + }; + } + li.appendChild(button); + + // create the contents of the button + if (item.submenu) { + // add the icon to the button + var divIcon = document.createElement('div'); + divIcon.className = 'icon'; + button.appendChild(divIcon); + button.appendChild(document.createTextNode(item.text)); + + var buttonSubmenu; + if (item.click) { + // submenu and a button with a click handler + button.className += ' default'; + + var buttonExpand = document.createElement('button'); + domItem.buttonExpand = buttonExpand; + buttonExpand.className = 'expand'; + buttonExpand.innerHTML = '
'; + li.appendChild(buttonExpand); + if (item.submenuTitle) { + buttonExpand.title = item.submenuTitle; + } + + buttonSubmenu = buttonExpand; + } + else { + // submenu and a button without a click handler + var divExpand = document.createElement('div'); + divExpand.className = 'expand'; + button.appendChild(divExpand); + + buttonSubmenu = button; + } + + // attach a handler to expand/collapse the submenu + buttonSubmenu.onclick = function () { + me._onExpandItem(domItem); + buttonSubmenu.focus(); + }; + + // create the submenu + var domSubItems = []; + domItem.subItems = domSubItems; + var ul = document.createElement('ul'); + domItem.ul = ul; + ul.className = 'menu'; + ul.style.height = '0'; + li.appendChild(ul); + createMenuItems(ul, domSubItems, item.submenu); + } + else { + // no submenu, just a button with clickhandler + button.innerHTML = '
' + item.text; + } + + domItems.push(domItem); + } + }); + } + createMenuItems(list, this.dom.items, items); + + // TODO: when the editor is small, show the submenu on the right instead of inline? + + // calculate the max height of the menu with one submenu expanded + this.maxHeight = 0; // height in pixels + items.forEach(function (item) { + var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24; + me.maxHeight = Math.max(me.maxHeight, height); + }); + } + + /** + * Get the currently visible buttons + * @return {Array.} buttons + * @private + */ + ContextMenu.prototype._getVisibleButtons = function () { + var buttons = []; + var me = this; + this.dom.items.forEach(function (item) { + buttons.push(item.button); + if (item.buttonExpand) { + buttons.push(item.buttonExpand); + } + if (item.subItems && item == me.expandedItem) { + item.subItems.forEach(function (subItem) { + buttons.push(subItem.button); + if (subItem.buttonExpand) { + buttons.push(subItem.buttonExpand); + } + // TODO: change to fully recursive method + }); + } + }); + + return buttons; + }; + + // currently displayed context menu, a singleton. We may only have one visible context menu + ContextMenu.visibleMenu = undefined; + + /** + * Attach the menu to an anchor + * @param {HTMLElement} anchor + */ + ContextMenu.prototype.show = function (anchor) { + this.hide(); + + // calculate whether the menu fits below the anchor + var windowHeight = window.innerHeight, + windowScroll = (window.pageYOffset || document.scrollTop || 0), + windowBottom = windowHeight + windowScroll, + anchorHeight = anchor.offsetHeight, + menuHeight = this.maxHeight; + + // position the menu + var left = util.getAbsoluteLeft(anchor); + var top = util.getAbsoluteTop(anchor); + if (top + anchorHeight + menuHeight < windowBottom) { + // display the menu below the anchor + this.dom.menu.style.left = left + 'px'; + this.dom.menu.style.top = (top + anchorHeight) + 'px'; + this.dom.menu.style.bottom = ''; + } + else { + // display the menu above the anchor + this.dom.menu.style.left = left + 'px'; + this.dom.menu.style.top = ''; + this.dom.menu.style.bottom = (windowHeight - top) + 'px'; + } + + // attach the menu to the document + document.body.appendChild(this.dom.menu); + + // create and attach event listeners + var me = this; + var list = this.dom.list; + this.eventListeners.mousedown = util.addEventListener( + document, 'mousedown', function (event) { + // hide menu on click outside of the menu + var target = event.target; + if ((target != list) && !me._isChildOf(target, list)) { + me.hide(); + event.stopPropagation(); + event.preventDefault(); + } + }); + this.eventListeners.mousewheel = util.addEventListener( + document, 'mousewheel', function (event) { + // block scrolling when context menu is visible + event.stopPropagation(); + event.preventDefault(); + }); + this.eventListeners.keydown = util.addEventListener( + document, 'keydown', function (event) { + me._onKeyDown(event); + }); + + // move focus to the first button in the context menu + this.selection = util.getSelection(); + this.anchor = anchor; + setTimeout(function () { + me.dom.focusButton.focus(); + }, 0); + + if (ContextMenu.visibleMenu) { + ContextMenu.visibleMenu.hide(); + } + ContextMenu.visibleMenu = this; + }; + + /** + * Hide the context menu if visible + */ + ContextMenu.prototype.hide = function () { + // remove the menu from the DOM + if (this.dom.menu.parentNode) { + this.dom.menu.parentNode.removeChild(this.dom.menu); + if (this.onClose) { + this.onClose(); + } + } + + // remove all event listeners + // all event listeners are supposed to be attached to document. + for (var name in this.eventListeners) { + if (this.eventListeners.hasOwnProperty(name)) { + var fn = this.eventListeners[name]; + if (fn) { + util.removeEventListener(document, name, fn); + } + delete this.eventListeners[name]; + } + } + + if (ContextMenu.visibleMenu == this) { + ContextMenu.visibleMenu = undefined; + } + }; + + /** + * Expand a submenu + * Any currently expanded submenu will be hided. + * @param {Object} domItem + * @private + */ + ContextMenu.prototype._onExpandItem = function (domItem) { + var me = this; + var alreadyVisible = (domItem == this.expandedItem); + + // hide the currently visible submenu + var expandedItem = this.expandedItem; + if (expandedItem) { + //var ul = expandedItem.ul; + expandedItem.ul.style.height = '0'; + expandedItem.ul.style.padding = ''; + setTimeout(function () { + if (me.expandedItem != expandedItem) { + expandedItem.ul.style.display = ''; + util.removeClassName(expandedItem.ul.parentNode, 'selected'); + } + }, 300); // timeout duration must match the css transition duration + this.expandedItem = undefined; + } + + if (!alreadyVisible) { + var ul = domItem.ul; + ul.style.display = 'block'; + var height = ul.clientHeight; // force a reflow in Firefox + setTimeout(function () { + if (me.expandedItem == domItem) { + ul.style.height = (ul.childNodes.length * 24) + 'px'; + ul.style.padding = '5px 10px'; + } + }, 0); + util.addClassName(ul.parentNode, 'selected'); + this.expandedItem = domItem; + } + }; + + /** + * Handle onkeydown event + * @param {Event} event + * @private + */ + ContextMenu.prototype._onKeyDown = function (event) { + var target = event.target; + var keynum = event.which; + var handled = false; + var buttons, targetIndex, prevButton, nextButton; + + if (keynum == 27) { // ESC + // hide the menu on ESC key + + // restore previous selection and focus + if (this.selection) { + util.setSelection(this.selection); + } + if (this.anchor) { + this.anchor.focus(); + } + + this.hide(); + + handled = true; + } + else if (keynum == 9) { // Tab + if (!event.shiftKey) { // Tab + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + if (targetIndex == buttons.length - 1) { + // move to first button + buttons[0].focus(); + handled = true; + } + } + else { // Shift+Tab + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + if (targetIndex == 0) { + // move to last button + buttons[buttons.length - 1].focus(); + handled = true; + } + } + } + else if (keynum == 37) { // Arrow Left + if (target.className == 'expand') { + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + prevButton = buttons[targetIndex - 1]; + if (prevButton) { + prevButton.focus(); + } + } + handled = true; + } + else if (keynum == 38) { // Arrow Up + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + prevButton = buttons[targetIndex - 1]; + if (prevButton && prevButton.className == 'expand') { + // skip expand button + prevButton = buttons[targetIndex - 2]; + } + if (!prevButton) { + // move to last button + prevButton = buttons[buttons.length - 1]; + } + if (prevButton) { + prevButton.focus(); + } + handled = true; + } + else if (keynum == 39) { // Arrow Right + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + nextButton = buttons[targetIndex + 1]; + if (nextButton && nextButton.className == 'expand') { + nextButton.focus(); + } + handled = true; + } + else if (keynum == 40) { // Arrow Down + buttons = this._getVisibleButtons(); + targetIndex = buttons.indexOf(target); + nextButton = buttons[targetIndex + 1]; + if (nextButton && nextButton.className == 'expand') { + // skip expand button + nextButton = buttons[targetIndex + 2]; + } + if (!nextButton) { + // move to first button + nextButton = buttons[0]; + } + if (nextButton) { + nextButton.focus(); + handled = true; + } + handled = true; + } + // TODO: arrow left and right + + if (handled) { + event.stopPropagation(); + event.preventDefault(); + } + }; + + /** + * Test if an element is a child of a parent element. + * @param {Element} child + * @param {Element} parent + * @return {boolean} isChild + */ + ContextMenu.prototype._isChildOf = function (child, parent) { + var e = child.parentNode; + while (e) { + if (e == parent) { + return true; + } + e = e.parentNode; + } + + return false; + }; + + module.exports = ContextMenu; + + +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(3); + var ContextMenu = __webpack_require__(10); + + /** + * A factory function to create an AppendNode, which depends on a Node + * @param {Node} Node + */ + function appendNodeFactory(Node) { + /** + * @constructor AppendNode + * @extends Node + * @param {TreeEditor} editor + * Create a new AppendNode. This is a special node which is created at the + * end of the list with childs for an object or array + */ + function AppendNode (editor) { + /** @type {TreeEditor} */ + this.editor = editor; + this.dom = {}; + } + + AppendNode.prototype = new Node(); + + /** + * Return a table row with an append button. + * @return {Element} dom TR element + */ + AppendNode.prototype.getDom = function () { + // TODO: implement a new solution for the append node + var dom = this.dom; + + if (dom.tr) { + return dom.tr; + } + + this._updateEditability(); + + // a row for the append button + var trAppend = document.createElement('tr'); + trAppend.node = this; + dom.tr = trAppend; + + // TODO: consistent naming + + if (this.editable.field) { + // a cell for the dragarea column + dom.tdDrag = document.createElement('td'); + + // create context menu + var tdMenu = document.createElement('td'); + dom.tdMenu = tdMenu; + var menu = document.createElement('button'); + menu.className = 'contextmenu'; + menu.title = 'Click to open the actions menu (Ctrl+M)'; + dom.menu = menu; + tdMenu.appendChild(dom.menu); + } + + // a cell for the contents (showing text 'empty') + var tdAppend = document.createElement('td'); + var domText = document.createElement('div'); + domText.innerHTML = '(empty)'; + domText.className = 'readonly'; + tdAppend.appendChild(domText); + dom.td = tdAppend; + dom.text = domText; + + this.updateDom(); + + return trAppend; + }; + + /** + * Update the HTML dom of the Node + */ + AppendNode.prototype.updateDom = function () { + var dom = this.dom; + var tdAppend = dom.td; + if (tdAppend) { + tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px'; + // TODO: not so nice hard coded offset + } + + var domText = dom.text; + if (domText) { + domText.innerHTML = '(empty ' + this.parent.type + ')'; + } + + // attach or detach the contents of the append node: + // hide when the parent has childs, show when the parent has no childs + var trAppend = dom.tr; + if (!this.isVisible()) { + if (dom.tr.firstChild) { + if (dom.tdDrag) { + trAppend.removeChild(dom.tdDrag); + } + if (dom.tdMenu) { + trAppend.removeChild(dom.tdMenu); + } + trAppend.removeChild(tdAppend); + } + } + else { + if (!dom.tr.firstChild) { + if (dom.tdDrag) { + trAppend.appendChild(dom.tdDrag); + } + if (dom.tdMenu) { + trAppend.appendChild(dom.tdMenu); + } + trAppend.appendChild(tdAppend); + } + } + }; + + /** + * Check whether the AppendNode is currently visible. + * the AppendNode is visible when its parent has no childs (i.e. is empty). + * @return {boolean} isVisible + */ + AppendNode.prototype.isVisible = function () { + return (this.parent.childs.length == 0); + }; + + /** + * Show a contextmenu for this node + * @param {HTMLElement} anchor The element to attach the menu to. + * @param {function} [onClose] Callback method called when the context menu + * is being closed. + */ + AppendNode.prototype.showContextMenu = function (anchor, onClose) { + var node = this; + var titles = Node.TYPE_TITLES; + var items = [ + // create append button + { + 'text': 'Append', + 'title': 'Append a new field with type \'auto\' (Ctrl+Shift+Ins)', + 'submenuTitle': 'Select the type of the field to be appended', + 'className': 'insert', + 'click': function () { + node._onAppend('', '', 'auto'); + }, + 'submenu': [ + { + 'text': 'Auto', + 'className': 'type-auto', + 'title': titles.auto, + 'click': function () { + node._onAppend('', '', 'auto'); + } + }, + { + 'text': 'Array', + 'className': 'type-array', + 'title': titles.array, + 'click': function () { + node._onAppend('', []); + } + }, + { + 'text': 'Object', + 'className': 'type-object', + 'title': titles.object, + 'click': function () { + node._onAppend('', {}); + } + }, + { + 'text': 'String', + 'className': 'type-string', + 'title': titles.string, + 'click': function () { + node._onAppend('', '', 'string'); + } + } + ] + } + ]; + + var menu = new ContextMenu(items, {close: onClose}); + menu.show(anchor); + }; + + /** + * Handle an event. The event is catched centrally by the editor + * @param {Event} event + */ + AppendNode.prototype.onEvent = function (event) { + var type = event.type; + var target = event.target || event.srcElement; + var dom = this.dom; + + // highlight the append nodes parent + var menu = dom.menu; + if (target == menu) { + if (type == 'mouseover') { + this.editor.highlighter.highlight(this.parent); + } + else if (type == 'mouseout') { + this.editor.highlighter.unhighlight(); + } + } + + // context menu events + if (type == 'click' && target == dom.menu) { + var highlighter = this.editor.highlighter; + highlighter.highlight(this.parent); + highlighter.lock(); + util.addClassName(dom.menu, 'selected'); + this.showContextMenu(dom.menu, function () { + util.removeClassName(dom.menu, 'selected'); + highlighter.unlock(); + highlighter.unhighlight(); + }); + } + + if (type == 'keydown') { + this.onKeyDown(event); + } + }; + + return AppendNode; + } + + module.exports = appendNodeFactory; + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { + + /* Jison generated parser */ + var jsonlint = (function(){ + var parser = {trace: function trace() { }, + yy: {}, + symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, + terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, + productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], + performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { + + var $0 = $$.length - 1; + switch (yystate) { + case 1: // replace escaped characters with actual character + this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") + .replace(/\\n/g,'\n') + .replace(/\\r/g,'\r') + .replace(/\\t/g,'\t') + .replace(/\\v/g,'\v') + .replace(/\\f/g,'\f') + .replace(/\\b/g,'\b'); + + break; + case 2:this.$ = Number(yytext); + break; + case 3:this.$ = null; + break; + case 4:this.$ = true; + break; + case 5:this.$ = false; + break; + case 6:return this.$ = $$[$0-1]; + break; + case 13:this.$ = {}; + break; + case 14:this.$ = $$[$0-1]; + break; + case 15:this.$ = [$$[$0-2], $$[$0]]; + break; + case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; + break; + case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; + break; + case 18:this.$ = []; + break; + case 19:this.$ = $$[$0-1]; + break; + case 20:this.$ = [$$[$0]]; + break; + case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); + break; + } + }, + table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], + defaultActions: {16:[2,6]}, + parseError: function parseError(str, hash) { + throw new Error(str); + }, + parse: function parse(input) { + var self = this, + stack = [0], + vstack = [null], // semantic value stack + lstack = [], // location stack + table = this.table, + yytext = '', + yylineno = 0, + yyleng = 0, + recovering = 0, + TERROR = 2, + EOF = 1; + + //this.reductionCount = this.shiftCount = 0; + + this.lexer.setInput(input); + this.lexer.yy = this.yy; + this.yy.lexer = this.lexer; + if (typeof this.lexer.yylloc == 'undefined') + this.lexer.yylloc = {}; + var yyloc = this.lexer.yylloc; + lstack.push(yyloc); + + if (typeof this.yy.parseError === 'function') + this.parseError = this.yy.parseError; + + function popStack (n) { + stack.length = stack.length - 2*n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; + } + + function lex() { + var token; + token = self.lexer.lex() || 1; // $end = 1 + // if token isn't its numeric value, convert + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + } + + var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; + while (true) { + // retreive state number from top of stack + state = stack[stack.length-1]; + + // use default actions if available + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol == null) + symbol = lex(); + // read action for current state and first input + action = table[state] && table[state][symbol]; + } + + // handle parse error + _handle_error: + if (typeof action === 'undefined' || !action.length || !action[0]) { + + if (!recovering) { + // Report error + expected = []; + for (p in table[state]) if (this.terminals_[p] && p > 2) { + expected.push("'"+this.terminals_[p]+"'"); + } + var errStr = ''; + if (this.lexer.showPosition) { + errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; + } else { + errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + + (symbol == 1 /*EOF*/ ? "end of input" : + ("'"+(this.terminals_[symbol] || symbol)+"'")); + } + this.parseError(errStr, + {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); + } + + // just recovered from another error + if (recovering == 3) { + if (symbol == EOF) { + throw new Error(errStr || 'Parsing halted.'); + } + + // discard current lookahead and grab another + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + symbol = lex(); + } + + // try to recover from error + while (1) { + // check for error recovery rule in this state + if ((TERROR.toString()) in table[state]) { + break; + } + if (state == 0) { + throw new Error(errStr || 'Parsing halted.'); + } + popStack(1); + state = stack[stack.length-1]; + } + + preErrorSymbol = symbol; // save the lookahead token + symbol = TERROR; // insert generic error symbol as new lookahead + state = stack[stack.length-1]; + action = table[state] && table[state][TERROR]; + recovering = 3; // allow 3 real symbols to be shifted before reporting a new error + } + + // this shouldn't happen, unless resolve defaults are off + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); + } + + switch (action[0]) { + + case 1: // shift + //this.shiftCount++; + + stack.push(symbol); + vstack.push(this.lexer.yytext); + lstack.push(this.lexer.yylloc); + stack.push(action[1]); // push state + symbol = null; + if (!preErrorSymbol) { // normal execution/no error + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + if (recovering > 0) + recovering--; + } else { // error just occurred, resume old lookahead f/ before error + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + + case 2: // reduce + //this.reductionCount++; + + len = this.productions_[action[1]][1]; + + // perform semantic action + yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 + // default location, uses first token for firsts, last for lasts + yyval._$ = { + first_line: lstack[lstack.length-(len||1)].first_line, + last_line: lstack[lstack.length-1].last_line, + first_column: lstack[lstack.length-(len||1)].first_column, + last_column: lstack[lstack.length-1].last_column + }; + r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); + + if (typeof r !== 'undefined') { + return r; + } + + // pop off stack + if (len) { + stack = stack.slice(0,-1*len*2); + vstack = vstack.slice(0, -1*len); + lstack = lstack.slice(0, -1*len); + } + + stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) + vstack.push(yyval.$); + lstack.push(yyval._$); + // goto new state = table[STATE][NONTERMINAL] + newState = table[stack[stack.length-2]][stack[stack.length-1]]; + stack.push(newState); + break; + + case 3: // accept + return true; + } + + } + + return true; + }}; + /* Jison generated lexer */ + var lexer = (function(){ + var lexer = ({EOF:1, + parseError:function parseError(str, hash) { + if (this.yy.parseError) { + this.yy.parseError(str, hash); + } else { + throw new Error(str); + } + }, + setInput:function (input) { + this._input = input; + this._more = this._less = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; + return this; + }, + input:function () { + var ch = this._input[0]; + this.yytext+=ch; + this.yyleng++; + this.match+=ch; + this.matched+=ch; + var lines = ch.match(/\n/); + if (lines) this.yylineno++; + this._input = this._input.slice(1); + return ch; + }, + unput:function (ch) { + this._input = ch + this._input; + return this; + }, + more:function () { + this._more = true; + return this; + }, + less:function (n) { + this._input = this.match.slice(n) + this._input; + }, + pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, + upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); + } + return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); + }, + showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c+"^"; + }, + next:function () { + if (this.done) { + return this.EOF; + } + if (!this._input) this.done = true; + + var token, + match, + tempMatch, + index, + col, + lines; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i=0;i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (!this.options.flex) break; + } + } + if (match) { + lines = match[0].match(/\n.*/g); + if (lines) this.yylineno += lines.length; + this.yylloc = {first_line: this.yylloc.last_line, + last_line: this.yylineno+1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} + this.yytext += match[0]; + this.match += match[0]; + this.yyleng = this.yytext.length; + this._more = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); + if (this.done && this._input) this.done = false; + if (token) return token; + else return; + } + if (this._input === "") { + return this.EOF; + } else { + this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), + {text: "", token: null, line: this.yylineno}); + } + }, + lex:function lex() { + var r = this.next(); + if (typeof r !== 'undefined') { + return r; + } else { + return this.lex(); + } + }, + begin:function begin(condition) { + this.conditionStack.push(condition); + }, + popState:function popState() { + return this.conditionStack.pop(); + }, + _currentRules:function _currentRules() { + return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; + }, + topState:function () { + return this.conditionStack[this.conditionStack.length-2]; + }, + pushState:function begin(condition) { + this.begin(condition); + }}); + lexer.options = {}; + lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { + + var YYSTATE=YY_START + switch($avoiding_name_collisions) { + case 0:/* skip whitespace */ + break; + case 1:return 6 + break; + case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 + break; + case 3:return 17 + break; + case 4:return 18 + break; + case 5:return 23 + break; + case 6:return 24 + break; + case 7:return 22 + break; + case 8:return 21 + break; + case 9:return 10 + break; + case 10:return 11 + break; + case 11:return 8 + break; + case 12:return 14 + break; + case 13:return 'INVALID' + break; + } + }; + lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; + lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; + + + ; + return lexer;})() + parser.lexer = lexer; + return parser; + })(); + if (true) { + exports.parser = jsonlint; + exports.parse = jsonlint.parse; + } + +/***/ }, +/* 13 */ /***/ function(module, exports, __webpack_require__) { /* ***** BEGIN LICENSE BLOCK ***** @@ -5870,7 +6986,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 10 */ +/* 14 */ /***/ function(module, exports, __webpack_require__) { /* ***** BEGIN LICENSE BLOCK ***** @@ -9403,7 +10519,7 @@ return /******/ (function(modules) { // webpackBootstrap }; init(true);function init(packaged) { - options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(17).packaged); + options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(18).packaged); if (!global.document) return ""; @@ -21892,7 +23008,7 @@ return /******/ (function(modules) { // webpackBootstrap try { var workerSrc = mod.src; - var Blob = __webpack_require__(21); + var Blob = __webpack_require__(19); var blob = new Blob([ workerSrc ], { type: 'application/javascript' }); var blobUrl = (window.URL || window.webkitURL).createObjectURL(blob); @@ -24086,7 +25202,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = window.ace.acequire("ace/ace"); /***/ }, -/* 11 */ +/* 15 */ /***/ function(module, exports, __webpack_require__) { ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { @@ -24693,7 +25809,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], __webpack_require__(16), "JsonWorker"); + var worker = new WorkerClient(["ace"], __webpack_require__(17), "JsonWorker"); worker.attachToDocument(session.getDocument()); worker.on("error", function(e) { @@ -24716,7 +25832,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 12 */ +/* 16 */ /***/ function(module, exports, __webpack_require__) { ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(acequire, exports, module) { @@ -25130,1451 +26246,21 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 13 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(3); - - /** - * A context menu - * @param {Object[]} items Array containing the menu structure - * TODO: describe structure - * @param {Object} [options] Object with options. Available options: - * {function} close Callback called when the - * context menu is being closed. - * @constructor - */ - function ContextMenu (items, options) { - this.dom = {}; - - var me = this; - var dom = this.dom; - this.anchor = undefined; - this.items = items; - this.eventListeners = {}; - this.selection = undefined; // holds the selection before the menu was opened - this.visibleSubmenu = undefined; - this.onClose = options ? options.close : undefined; - - // create a container element - var menu = document.createElement('div'); - menu.className = 'jsoneditor-contextmenu'; - dom.menu = menu; - - // create a list to hold the menu items - var list = document.createElement('ul'); - list.className = 'menu'; - menu.appendChild(list); - dom.list = list; - dom.items = []; // list with all buttons - - // create a (non-visible) button to set the focus to the menu - var focusButton = document.createElement('button'); - dom.focusButton = focusButton; - var li = document.createElement('li'); - li.style.overflow = 'hidden'; - li.style.height = '0'; - li.appendChild(focusButton); - list.appendChild(li); - - function createMenuItems (list, domItems, items) { - items.forEach(function (item) { - if (item.type == 'separator') { - // create a separator - var separator = document.createElement('div'); - separator.className = 'separator'; - li = document.createElement('li'); - li.appendChild(separator); - list.appendChild(li); - } - else { - var domItem = {}; - - // create a menu item - var li = document.createElement('li'); - list.appendChild(li); - - // create a button in the menu item - var button = document.createElement('button'); - button.className = item.className; - domItem.button = button; - if (item.title) { - button.title = item.title; - } - if (item.click) { - button.onclick = function () { - me.hide(); - item.click(); - }; - } - li.appendChild(button); - - // create the contents of the button - if (item.submenu) { - // add the icon to the button - var divIcon = document.createElement('div'); - divIcon.className = 'icon'; - button.appendChild(divIcon); - button.appendChild(document.createTextNode(item.text)); - - var buttonSubmenu; - if (item.click) { - // submenu and a button with a click handler - button.className += ' default'; - - var buttonExpand = document.createElement('button'); - domItem.buttonExpand = buttonExpand; - buttonExpand.className = 'expand'; - buttonExpand.innerHTML = '
'; - li.appendChild(buttonExpand); - if (item.submenuTitle) { - buttonExpand.title = item.submenuTitle; - } - - buttonSubmenu = buttonExpand; - } - else { - // submenu and a button without a click handler - var divExpand = document.createElement('div'); - divExpand.className = 'expand'; - button.appendChild(divExpand); - - buttonSubmenu = button; - } - - // attach a handler to expand/collapse the submenu - buttonSubmenu.onclick = function () { - me._onExpandItem(domItem); - buttonSubmenu.focus(); - }; - - // create the submenu - var domSubItems = []; - domItem.subItems = domSubItems; - var ul = document.createElement('ul'); - domItem.ul = ul; - ul.className = 'menu'; - ul.style.height = '0'; - li.appendChild(ul); - createMenuItems(ul, domSubItems, item.submenu); - } - else { - // no submenu, just a button with clickhandler - button.innerHTML = '
' + item.text; - } - - domItems.push(domItem); - } - }); - } - createMenuItems(list, this.dom.items, items); - - // TODO: when the editor is small, show the submenu on the right instead of inline? - - // calculate the max height of the menu with one submenu expanded - this.maxHeight = 0; // height in pixels - items.forEach(function (item) { - var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24; - me.maxHeight = Math.max(me.maxHeight, height); - }); - } - - /** - * Get the currently visible buttons - * @return {Array.} buttons - * @private - */ - ContextMenu.prototype._getVisibleButtons = function () { - var buttons = []; - var me = this; - this.dom.items.forEach(function (item) { - buttons.push(item.button); - if (item.buttonExpand) { - buttons.push(item.buttonExpand); - } - if (item.subItems && item == me.expandedItem) { - item.subItems.forEach(function (subItem) { - buttons.push(subItem.button); - if (subItem.buttonExpand) { - buttons.push(subItem.buttonExpand); - } - // TODO: change to fully recursive method - }); - } - }); - - return buttons; - }; - - // currently displayed context menu, a singleton. We may only have one visible context menu - ContextMenu.visibleMenu = undefined; - - /** - * Attach the menu to an anchor - * @param {HTMLElement} anchor - */ - ContextMenu.prototype.show = function (anchor) { - this.hide(); - - // calculate whether the menu fits below the anchor - var windowHeight = window.innerHeight, - windowScroll = (window.pageYOffset || document.scrollTop || 0), - windowBottom = windowHeight + windowScroll, - anchorHeight = anchor.offsetHeight, - menuHeight = this.maxHeight; - - // position the menu - var left = util.getAbsoluteLeft(anchor); - var top = util.getAbsoluteTop(anchor); - if (top + anchorHeight + menuHeight < windowBottom) { - // display the menu below the anchor - this.dom.menu.style.left = left + 'px'; - this.dom.menu.style.top = (top + anchorHeight) + 'px'; - this.dom.menu.style.bottom = ''; - } - else { - // display the menu above the anchor - this.dom.menu.style.left = left + 'px'; - this.dom.menu.style.top = ''; - this.dom.menu.style.bottom = (windowHeight - top) + 'px'; - } - - // attach the menu to the document - document.body.appendChild(this.dom.menu); - - // create and attach event listeners - var me = this; - var list = this.dom.list; - this.eventListeners.mousedown = util.addEventListener( - document, 'mousedown', function (event) { - // hide menu on click outside of the menu - var target = event.target; - if ((target != list) && !me._isChildOf(target, list)) { - me.hide(); - event.stopPropagation(); - event.preventDefault(); - } - }); - this.eventListeners.mousewheel = util.addEventListener( - document, 'mousewheel', function (event) { - // block scrolling when context menu is visible - event.stopPropagation(); - event.preventDefault(); - }); - this.eventListeners.keydown = util.addEventListener( - document, 'keydown', function (event) { - me._onKeyDown(event); - }); - - // move focus to the first button in the context menu - this.selection = util.getSelection(); - this.anchor = anchor; - setTimeout(function () { - me.dom.focusButton.focus(); - }, 0); - - if (ContextMenu.visibleMenu) { - ContextMenu.visibleMenu.hide(); - } - ContextMenu.visibleMenu = this; - }; - - /** - * Hide the context menu if visible - */ - ContextMenu.prototype.hide = function () { - // remove the menu from the DOM - if (this.dom.menu.parentNode) { - this.dom.menu.parentNode.removeChild(this.dom.menu); - if (this.onClose) { - this.onClose(); - } - } - - // remove all event listeners - // all event listeners are supposed to be attached to document. - for (var name in this.eventListeners) { - if (this.eventListeners.hasOwnProperty(name)) { - var fn = this.eventListeners[name]; - if (fn) { - util.removeEventListener(document, name, fn); - } - delete this.eventListeners[name]; - } - } - - if (ContextMenu.visibleMenu == this) { - ContextMenu.visibleMenu = undefined; - } - }; - - /** - * Expand a submenu - * Any currently expanded submenu will be hided. - * @param {Object} domItem - * @private - */ - ContextMenu.prototype._onExpandItem = function (domItem) { - var me = this; - var alreadyVisible = (domItem == this.expandedItem); - - // hide the currently visible submenu - var expandedItem = this.expandedItem; - if (expandedItem) { - //var ul = expandedItem.ul; - expandedItem.ul.style.height = '0'; - expandedItem.ul.style.padding = ''; - setTimeout(function () { - if (me.expandedItem != expandedItem) { - expandedItem.ul.style.display = ''; - util.removeClassName(expandedItem.ul.parentNode, 'selected'); - } - }, 300); // timeout duration must match the css transition duration - this.expandedItem = undefined; - } - - if (!alreadyVisible) { - var ul = domItem.ul; - ul.style.display = 'block'; - var height = ul.clientHeight; // force a reflow in Firefox - setTimeout(function () { - if (me.expandedItem == domItem) { - ul.style.height = (ul.childNodes.length * 24) + 'px'; - ul.style.padding = '5px 10px'; - } - }, 0); - util.addClassName(ul.parentNode, 'selected'); - this.expandedItem = domItem; - } - }; - - /** - * Handle onkeydown event - * @param {Event} event - * @private - */ - ContextMenu.prototype._onKeyDown = function (event) { - var target = event.target; - var keynum = event.which; - var handled = false; - var buttons, targetIndex, prevButton, nextButton; - - if (keynum == 27) { // ESC - // hide the menu on ESC key - - // restore previous selection and focus - if (this.selection) { - util.setSelection(this.selection); - } - if (this.anchor) { - this.anchor.focus(); - } - - this.hide(); - - handled = true; - } - else if (keynum == 9) { // Tab - if (!event.shiftKey) { // Tab - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - if (targetIndex == buttons.length - 1) { - // move to first button - buttons[0].focus(); - handled = true; - } - } - else { // Shift+Tab - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - if (targetIndex == 0) { - // move to last button - buttons[buttons.length - 1].focus(); - handled = true; - } - } - } - else if (keynum == 37) { // Arrow Left - if (target.className == 'expand') { - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - prevButton = buttons[targetIndex - 1]; - if (prevButton) { - prevButton.focus(); - } - } - handled = true; - } - else if (keynum == 38) { // Arrow Up - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - prevButton = buttons[targetIndex - 1]; - if (prevButton && prevButton.className == 'expand') { - // skip expand button - prevButton = buttons[targetIndex - 2]; - } - if (!prevButton) { - // move to last button - prevButton = buttons[buttons.length - 1]; - } - if (prevButton) { - prevButton.focus(); - } - handled = true; - } - else if (keynum == 39) { // Arrow Right - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - nextButton = buttons[targetIndex + 1]; - if (nextButton && nextButton.className == 'expand') { - nextButton.focus(); - } - handled = true; - } - else if (keynum == 40) { // Arrow Down - buttons = this._getVisibleButtons(); - targetIndex = buttons.indexOf(target); - nextButton = buttons[targetIndex + 1]; - if (nextButton && nextButton.className == 'expand') { - // skip expand button - nextButton = buttons[targetIndex + 2]; - } - if (!nextButton) { - // move to first button - nextButton = buttons[0]; - } - if (nextButton) { - nextButton.focus(); - handled = true; - } - handled = true; - } - // TODO: arrow left and right - - if (handled) { - event.stopPropagation(); - event.preventDefault(); - } - }; - - /** - * Test if an element is a child of a parent element. - * @param {Element} child - * @param {Element} parent - * @return {boolean} isChild - */ - ContextMenu.prototype._isChildOf = function (child, parent) { - var e = child.parentNode; - while (e) { - if (e == parent) { - return true; - } - e = e.parentNode; - } - - return false; - }; - - module.exports = ContextMenu; - - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(3); - var ContextMenu = __webpack_require__(13); - - /** - * A factory function to create an AppendNode, which depends on a Node - * @param {Node} Node - */ - function appendNodeFactory(Node) { - /** - * @constructor AppendNode - * @extends Node - * @param {TreeEditor} editor - * Create a new AppendNode. This is a special node which is created at the - * end of the list with childs for an object or array - */ - function AppendNode (editor) { - /** @type {TreeEditor} */ - this.editor = editor; - this.dom = {}; - } - - AppendNode.prototype = new Node(); - - /** - * Return a table row with an append button. - * @return {Element} dom TR element - */ - AppendNode.prototype.getDom = function () { - // TODO: implement a new solution for the append node - var dom = this.dom; - - if (dom.tr) { - return dom.tr; - } - - this._updateEditability(); - - // a row for the append button - var trAppend = document.createElement('tr'); - trAppend.node = this; - dom.tr = trAppend; - - // TODO: consistent naming - - if (this.editable.field) { - // a cell for the dragarea column - dom.tdDrag = document.createElement('td'); - - // create context menu - var tdMenu = document.createElement('td'); - dom.tdMenu = tdMenu; - var menu = document.createElement('button'); - menu.className = 'contextmenu'; - menu.title = 'Click to open the actions menu (Ctrl+M)'; - dom.menu = menu; - tdMenu.appendChild(dom.menu); - } - - // a cell for the contents (showing text 'empty') - var tdAppend = document.createElement('td'); - var domText = document.createElement('div'); - domText.innerHTML = '(empty)'; - domText.className = 'readonly'; - tdAppend.appendChild(domText); - dom.td = tdAppend; - dom.text = domText; - - this.updateDom(); - - return trAppend; - }; - - /** - * Update the HTML dom of the Node - */ - AppendNode.prototype.updateDom = function () { - var dom = this.dom; - var tdAppend = dom.td; - if (tdAppend) { - tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px'; - // TODO: not so nice hard coded offset - } - - var domText = dom.text; - if (domText) { - domText.innerHTML = '(empty ' + this.parent.type + ')'; - } - - // attach or detach the contents of the append node: - // hide when the parent has childs, show when the parent has no childs - var trAppend = dom.tr; - if (!this.isVisible()) { - if (dom.tr.firstChild) { - if (dom.tdDrag) { - trAppend.removeChild(dom.tdDrag); - } - if (dom.tdMenu) { - trAppend.removeChild(dom.tdMenu); - } - trAppend.removeChild(tdAppend); - } - } - else { - if (!dom.tr.firstChild) { - if (dom.tdDrag) { - trAppend.appendChild(dom.tdDrag); - } - if (dom.tdMenu) { - trAppend.appendChild(dom.tdMenu); - } - trAppend.appendChild(tdAppend); - } - } - }; - - /** - * Check whether the AppendNode is currently visible. - * the AppendNode is visible when its parent has no childs (i.e. is empty). - * @return {boolean} isVisible - */ - AppendNode.prototype.isVisible = function () { - return (this.parent.childs.length == 0); - }; - - /** - * Show a contextmenu for this node - * @param {HTMLElement} anchor The element to attach the menu to. - * @param {function} [onClose] Callback method called when the context menu - * is being closed. - */ - AppendNode.prototype.showContextMenu = function (anchor, onClose) { - var node = this; - var titles = Node.TYPE_TITLES; - var items = [ - // create append button - { - 'text': 'Append', - 'title': 'Append a new field with type \'auto\' (Ctrl+Shift+Ins)', - 'submenuTitle': 'Select the type of the field to be appended', - 'className': 'insert', - 'click': function () { - node._onAppend('', '', 'auto'); - }, - 'submenu': [ - { - 'text': 'Auto', - 'className': 'type-auto', - 'title': titles.auto, - 'click': function () { - node._onAppend('', '', 'auto'); - } - }, - { - 'text': 'Array', - 'className': 'type-array', - 'title': titles.array, - 'click': function () { - node._onAppend('', []); - } - }, - { - 'text': 'Object', - 'className': 'type-object', - 'title': titles.object, - 'click': function () { - node._onAppend('', {}); - } - }, - { - 'text': 'String', - 'className': 'type-string', - 'title': titles.string, - 'click': function () { - node._onAppend('', '', 'string'); - } - } - ] - } - ]; - - var menu = new ContextMenu(items, {close: onClose}); - menu.show(anchor); - }; - - /** - * Handle an event. The event is catched centrally by the editor - * @param {Event} event - */ - AppendNode.prototype.onEvent = function (event) { - var type = event.type; - var target = event.target || event.srcElement; - var dom = this.dom; - - // highlight the append nodes parent - var menu = dom.menu; - if (target == menu) { - if (type == 'mouseover') { - this.editor.highlighter.highlight(this.parent); - } - else if (type == 'mouseout') { - this.editor.highlighter.unhighlight(); - } - } - - // context menu events - if (type == 'click' && target == dom.menu) { - var highlighter = this.editor.highlighter; - highlighter.highlight(this.parent); - highlighter.lock(); - util.addClassName(dom.menu, 'selected'); - this.showContextMenu(dom.menu, function () { - util.removeClassName(dom.menu, 'selected'); - highlighter.unlock(); - highlighter.unhighlight(); - }); - } - - if (type == 'keydown') { - this.onKeyDown(event); - } - }; - - return AppendNode; - } - - module.exports = appendNodeFactory; - - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process, module) {/* Jison generated parser */ - var jsonlint = (function(){ - var parser = {trace: function trace() { }, - yy: {}, - symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, - terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, - productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], - performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - - var $0 = $$.length - 1; - switch (yystate) { - case 1: // replace escaped characters with actual character - this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") - .replace(/\\n/g,'\n') - .replace(/\\r/g,'\r') - .replace(/\\t/g,'\t') - .replace(/\\v/g,'\v') - .replace(/\\f/g,'\f') - .replace(/\\b/g,'\b'); - - break; - case 2:this.$ = Number(yytext); - break; - case 3:this.$ = null; - break; - case 4:this.$ = true; - break; - case 5:this.$ = false; - break; - case 6:return this.$ = $$[$0-1]; - break; - case 13:this.$ = {}; - break; - case 14:this.$ = $$[$0-1]; - break; - case 15:this.$ = [$$[$0-2], $$[$0]]; - break; - case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; - break; - case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; - break; - case 18:this.$ = []; - break; - case 19:this.$ = $$[$0-1]; - break; - case 20:this.$ = [$$[$0]]; - break; - case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); - break; - } - }, - table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], - defaultActions: {16:[2,6]}, - parseError: function parseError(str, hash) { - throw new Error(str); - }, - parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') - this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') - this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - - function lex() { - var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; - while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol == null) - symbol = lex(); - // read action for current state and first input - action = table[state] && table[state][symbol]; - } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; - } - - } - - return true; - }}; - /* Jison generated lexer */ - var lexer = (function(){ - var lexer = ({EOF:1, - parseError:function parseError(str, hash) { - if (this.yy.parseError) { - this.yy.parseError(str, hash); - } else { - throw new Error(str); - } - }, - setInput:function (input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; - return this; - }, - input:function () { - var ch = this._input[0]; - this.yytext+=ch; - this.yyleng++; - this.match+=ch; - this.matched+=ch; - var lines = ch.match(/\n/); - if (lines) this.yylineno++; - this._input = this._input.slice(1); - return ch; - }, - unput:function (ch) { - this._input = ch + this._input; - return this; - }, - more:function () { - this._more = true; - return this; - }, - less:function (n) { - this._input = this.match.slice(n) + this._input; - }, - pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, - upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); - }, - showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c+"^"; - }, - next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - - var token, - match, - tempMatch, - index, - col, - lines; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i=0;i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/\n.*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = {first_line: this.yylloc.last_line, - last_line: this.yylineno+1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} - this.yytext += match[0]; - this.match += match[0]; - this.yyleng = this.yytext.length; - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); - if (this.done && this._input) this.done = false; - if (token) return token; - else return; - } - if (this._input === "") { - return this.EOF; - } else { - this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), - {text: "", token: null, line: this.yylineno}); - } - }, - lex:function lex() { - var r = this.next(); - if (typeof r !== 'undefined') { - return r; - } else { - return this.lex(); - } - }, - begin:function begin(condition) { - this.conditionStack.push(condition); - }, - popState:function popState() { - return this.conditionStack.pop(); - }, - _currentRules:function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; - }, - topState:function () { - return this.conditionStack[this.conditionStack.length-2]; - }, - pushState:function begin(condition) { - this.begin(condition); - }}); - lexer.options = {}; - lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - - var YYSTATE=YY_START - switch($avoiding_name_collisions) { - case 0:/* skip whitespace */ - break; - case 1:return 6 - break; - case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 - break; - case 3:return 17 - break; - case 4:return 18 - break; - case 5:return 23 - break; - case 6:return 24 - break; - case 7:return 22 - break; - case 8:return 21 - break; - case 9:return 10 - break; - case 10:return 11 - break; - case 11:return 8 - break; - case 12:return 14 - break; - case 13:return 'INVALID' - break; - } - }; - lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; - lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; - - - ; - return lexer;})() - parser.lexer = lexer; - return parser; - })(); - if (true) { - exports.parser = jsonlint; - exports.parse = function () { return jsonlint.parse.apply(jsonlint, arguments); } - exports.main = function commonjsMain(args) { - if (!args[1]) - throw new Error('Usage: '+args[0]+' FILE'); - if (typeof process !== 'undefined') { - var source = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"fs\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).readFileSync(__webpack_require__(19).join(process.cwd(), args[1]), "utf8"); - } else { - var cwd = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"file\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).path(__webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"file\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).cwd()); - var source = cwd.join(args[1]).read({charset: "utf-8"}); - } - return exports.parser.parse(source); - } - if (typeof module !== 'undefined' && __webpack_require__.c[0] === module) { - exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"system\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).args); - } - } - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(20), __webpack_require__(18)(module))) - -/***/ }, -/* 16 */ +/* 17 */ /***/ function(module, exports, __webpack_require__) { module.exports.id = 'ace/mode/json_worker'; module.exports.src = "\"no use strict\";(function(window){if(void 0===window.window||!window.document){window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console,window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;var chunks=id.split(\"/\");if(!window.acequire.tlns)return console.log(\"unable to load \"+id);chunks[0]=window.acequire.tlns[chunks[0]]||chunks[0];var path=chunks.join(\"/\")+\".js\";return window.acequire.id=id,importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},window.initBaseUrls=function initBaseUrls(topLevelNamespaces){acequire.tlns=topLevelNamespaces},window.initSender=function initSender(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.command){if(!main[msg.command])throw Error(\"Unknown command:\"+msg.command);main[msg.command].apply(main,msg.args)}else if(msg.init){initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}else msg.event&&sender&&sender._signal(msg.event,msg.data)}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.column===column&&this.$insertRight||(start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row)):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?start.row===row&&0===column&&this.$insertRight||row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0===text.length?this.$lines=[\"\"]:Array.isArray(text)?this._insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.getLine(range.start.row).substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row,range.end.row);lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;return range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this._insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){return row>=this.getLength()?this.insert({row:row,column:0},\"\\n\"+lines.join(\"\\n\")):this._insertLines(Math.max(row,0),lines)},this._insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};for(;lines.length>61440;){var end=this._insertLines(row,lines.slice(0,61440));lines=lines.slice(61440),row=end.row}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._signal(\"change\",{data:delta}),range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._signal(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._signal(\"change\",{data:delta}),end},this.remove=function(range){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this._removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._signal(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){return 0>firstRow||lastRow>=this.getLength()?this.remove(new Range(firstRow,0,lastRow+1,0)):this._removeLines(firstRow,lastRow)},this._removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._signal(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._signal(\"change\",{data:delta})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this._removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this._removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this._insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if(\"object\"!=typeof obj||!obj)return obj;var cons=obj.constructor;if(cons===RegExp)return obj;var copy=cons();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?exports.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue();try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);return this.sender.emit(\"error\",{row:pos.row,column:pos.column,text:e.message,type:\"error\"}),void 0}this.sender.emit(\"ok\")}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;\nfor(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }, -/* 17 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { module.exports = function() { throw new Error("define cannot be used indirect"); }; -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } - - /***/ }, /* 19 */ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - // resolves . and .. elements in a path array with directory names there - // must be no slashes, empty elements, or device names (c:\) in the array - // (so also no leading and trailing slashes - it does not distinguish - // relative and absolute paths) - function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; - } - - // Split a filename into [root, dir, basename, ext], unix version - // 'root' is just a slash, or nothing. - var splitPathRe = - /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - var splitPath = function(filename) { - return splitPathRe.exec(filename).slice(1); - }; - - // path.resolve([from ...], to) - // posix version - exports.resolve = function() { - var resolvedPath = '', - resolvedAbsolute = false; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - }; - - // path.normalize(path) - // posix version - exports.normalize = function(path) { - var isAbsolute = exports.isAbsolute(path), - trailingSlash = substr(path, -1) === '/'; - - // Normalize the path - path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; - }; - - // posix version - exports.isAbsolute = function(path) { - return path.charAt(0) === '/'; - }; - - // posix version - exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - if (typeof p !== 'string') { - throw new TypeError('Arguments to path.join must be strings'); - } - return p; - }).join('/')); - }; - - - // path.relative(from, to) - // posix version - exports.relative = function(from, to) { - from = exports.resolve(from).substr(1); - to = exports.resolve(to).substr(1); - - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - - return outputParts.join('/'); - }; - - exports.sep = '/'; - exports.delimiter = ':'; - - exports.dirname = function(path) { - var result = splitPath(path), - root = result[0], - dir = result[1]; - - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - - return root + dir; - }; - - - exports.basename = function(path, ext) { - var f = splitPath(path)[2]; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; - }; - - - exports.extname = function(path) { - return splitPath(path)[3]; - }; - - function filter (xs, f) { - if (xs.filter) return xs.filter(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - if (f(xs[i], i, xs)) res.push(xs[i]); - } - return res; - } - - // String.prototype.substr - negative index don't work in IE8 - var substr = 'ab'.substr(-1) === 'b' - ? function (str, start, len) { return str.substr(start, len) } - : function (str, start, len) { - if (start < 0) start = str.length + start; - return str.substr(start, len); - } - ; - - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(20))) - -/***/ }, -/* 20 */ -/***/ function(module, exports, __webpack_require__) { - - // shim for using process in browser - - var process = module.exports = {}; - var queue = []; - var draining = false; - - function drainQueue() { - if (draining) { - return; - } - draining = true; - var currentQueue; - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - var i = -1; - while (++i < len) { - currentQueue[i](); - } - len = queue.length; - } - draining = false; - } - process.nextTick = function (fun) { - queue.push(fun); - if (!draining) { - setTimeout(drainQueue, 0); - } - }; - - process.title = 'browser'; - process.browser = true; - process.env = {}; - process.argv = []; - process.version = ''; // empty string to avoid regexp issues - process.versions = {}; - - function noop() {} - - process.on = noop; - process.addListener = noop; - process.once = noop; - process.off = noop; - process.removeListener = noop; - process.removeAllListeners = noop; - process.emit = noop; - - process.binding = function (name) { - throw new Error('process.binding is not supported'); - }; - - // TODO(shtylman) - process.cwd = function () { return '/' }; - process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); - }; - process.umask = function() { return 0; }; - - -/***/ }, -/* 21 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {module.exports = get_blob() diff --git a/dist/jsoneditor.map b/dist/jsoneditor.map index 73c13c4..0a2d4c1 100644 --- a/dist/jsoneditor.map +++ b/dist/jsoneditor.map @@ -1 +1 @@ -{"version":3,"file":"jsoneditor.map","sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","arguments","length","_create","treemode","textmode","modes","prototype","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","config","asText","clear","mixin","create","load","err","_onError","onError","log","error","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","Node","modeswitcher","dom","highlighter","selection","undefined","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","focusNode","domFocus","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","change","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","autoScrollStep","scrollTop","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","range","setSelectionOffset","getSelection","getSelectionOffset","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","nodeName","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","onChange","disabled","canUndo","canRedo","modeBox","searchBox","type","_onKeyDown","getNodeFromTarget","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","select","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","ace","indentation","Number","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","poweredBy","createTextNode","href","window","open","on","spellcheck","resize","force","sanitize","setValue","jsonlint","jsonString","validate","jsString","curr","charAt","prev","prevIsBrace","ii","cc","skipComment","parseString","quote","chars","push","parseKey","specialValues","key","regexp","test","indexOf","match","join","a","b","console","apply","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","Object","toString","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childs","childNodes","iMax","child","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","setStart","firstChild","setEnd","getInnerText","element","buffer","first","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","removeEventListener","detachEvent","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","appendNode","parent","insertBeforeNode","insertBefore","beforeNode","insertAfterNode","insertAfter","afterNode","removeNode","append","duplicateNode","clone","changeType","oldType","newType","moveNode","startParent","moveTo","startIndex","endParent","endIndex","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","timeout","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","innerHTML","expanded","setField","fieldEditable","ContextMenu","appendNodeFactory","_updateEditability","editable","path","unshift","setParent","getField","_getDomField","childValue","_getType","childField","arr","forEach","_getDomValue","getLevel","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","hide","_hasChilds","newTr","appendTr","updateIndexes","moveBefore","trTemp","AppendNode","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","concat","_updateDomValue","offsetTop","focusElement","elementName","drag","editableDiv","_duplicate","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","str","domValue","v","t","color","isEmpty","count","domField","oldField","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","_onDragStart","mousemove","_onDrag","mouseup","_onDragEnd","oldCursor","body","cursor","mouseX","pageX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","pageY","moved","offsetHeight","previousSibling","diffX","diffLevel","round","levelNext","_isChildOf","n","_createDomField","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","tdValue","srcElement","expandable","showContextMenu","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","_onDuplicate","_onRemove","_onInsertBefore","_onInsertAfter","lastNode","_lastNode","_getElementName","firstNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","newNode","_onAppend","_onChangeType","_onSort","direction","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","anchor","onClose","titles","items","submenu","click","submenuTitle","close","show","Array","lower","num","numFloat","isNaN","htmlEscaped","replace","substring","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","code","form","view","item","currentMode","currentTitle","box","acequire","isDark","cssClass","cssText","importCssString","exportAce","ns","_acequire","global","packaged","_define","original","ACE_NAMESPACE","acequirejs","deps","payload","trace","payloads","parentId","l","dep","lookup","normalizeModule","moduleName","chunks","base","slice","mod","uri","req","returnValue","getNativeFlags","regex","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","x","lastIndex","r2","source","_xregexp","captureNames","Empty","doesDefinePropertyWork","defineProperty","exception","toInteger","floor","bind","that","TypeError","args","bound","result","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","start","deleteCount","pos","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","self","thisp","map","filter","every","some","reduce","reduceRight","sought","lastIndexOf","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","keys","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","properties","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","dontEnum","now","getTime","ws","trim","trimBeginRegexp","trimEndRegexp","o","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssStylsheet","link","rel","getInnerWidth","parseInt","computedStyle","getInnerHeight","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","scrollbarWidth","inner","minWidth","display","outer","position","overflow","noScrollbar","offsetWidth","withScrollbar","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","proto","oop","Keys","ret","MODIFIER_KEYS",16,17,18,224,"KEY_MODS","ctrl","alt","option","shift","super","meta","command","cmd","FUNCTION_KEYS",8,9,13,19,27,32,33,34,35,36,37,38,39,40,44,45,46,96,97,98,99,100,101,102,103,104,105,"-13",112,113,114,115,116,117,118,119,120,121,122,123,144,145,"PRINTABLE_KEYS",48,49,50,51,52,53,54,55,56,57,59,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,107,109,110,187,188,189,190,191,192,219,220,221,222,"enter","escape","esc","del","mods","pow","keyCodeToString","keyString","fromCharCode","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","e","hashId","getModifierHash","useragent","pressedKeys","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","button",1,2,4,"capture","eventHandler","releaseCaptureHandler","onMouseUp","addMouseWheelListener","factor","wheelDeltaX","wheelX","wheelY","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","timeouts","callbackName","startX","startY","timer","clicks","eventNames",3,"isNewClick","clientX","clientY","_clicks","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","last","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copy","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","host","resetSelection","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","wrap","autocorrect","autocapitalize","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","charCodeAt","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","substr","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","markUndoGroup","clearSelection","val","lastValue","r","getRange","setRange","syncComposition","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","sqrt","calcRangeOrientation","row","end","cmp","column","DRAG_OFFSET","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","time","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","html","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","$cells","right","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","$blockScrolling","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","counter","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","types","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","onDragStart","cancelDrag","draggable","setDragImage","clearData","getTextRange","onDragEnd","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","state","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","url","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","s","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","pop","capturing","off","removeAllListeners","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","all","moduleUrl","component","parts","sep","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","warn","forwardTo","handlesSet","defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","DefaultGutterHandler","MouseHandler","focusEditor","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","char","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","commands","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","h","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compare","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","line","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","ch","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","func","toJSON","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","adjustedregex","matchcount","token","reportError","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","msg","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","keywords","list","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","codePoint","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","unicode","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","indent","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","$id","Anchor","$onChange","$clipPositionToDocument","$insertRight","delta","noClip","Document","$lines","_insertLines","len","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","lines","$clipPosition","firstLine","lastLine","insertNewLine","insertLines","firstFullRow","lastFullRow","_removeLines","removeNewLine","newLine","removeLines","nl","secondLine","applyDeltas","deltas","revertDeltas","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","cache","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","changeRange","lineDif","consumePoint","point","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","updateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets",")","(","]","[","{","}","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","group","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","w","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","enable","isUndo","isInsert","lastDeltaIsInsert","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","addSplit","displayed","lastSplit","lastDocSplit","splits","displayLength","isCode","$wrapAsCode","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","destroy","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","backwards","matchIterator","_callback","$lineIterator","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","skipCurrent","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","bindKey","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","asDefault","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","getAllRanges","findNext","multiSelectAction","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","endCol","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","theme","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","number","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","inVirtualSelectionMode","linesMoved","rangeIndex","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","undoSelectionRange","redoSelectionRange","hasRedo","markClean","isClean","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","padding","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingLeft","paddingRight","Marker","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","getCharacterWidth","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceReg","replaceFunc","tabIdx","classToUse","space","output","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","to","renderTokens","$measureNode","IE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","visibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","isRoot","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","maxHeight","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","flint","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","$vScrollBarAlwaysVisible","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","$theme","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","q","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","other","showOtherMarkers","othersActive","hideOtherMarkers","lengthDiff","distanceFromStart","otherPos","newPos","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","readonly","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","_inDocument","removeLineWidget","$updateRows","noWidgets","addLineWidget","zIndex","coverGutter","pixelHeight","onWidgetChanged","changedWidgets","fixedWidth","coverLine","binarySearch","comparator","findAnnotations","matched","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","JsonHighlightRules","MatchingBraceOutdent","openBracePos","context","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","CstyleBehaviour","selected","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","closing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","quotepos","$matchTokenType","iterator2","BaseFoldMode","commentRegex","forceMultiline","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","tab","worker","searchboxCss","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f|Ctrl-H|Command-Option-F","isReplace","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","checked","$syncOptions","noMatch","replaceAndFindNext","createMenuItems","domItems","separator","li","domItem","divIcon","buttonSubmenu","buttonExpand","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","visibleSubmenu","focusButton","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","windowScroll","windowBottom","anchorHeight","menuHeight","mousedown","mousewheel","keydown","fn","alreadyVisible","targetIndex","prevButton","nextButton","trAppend","tdAppend","domText","process","parser","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","JSONMemberList","JSONMember",":",",","JSONElementList","$accept","$end","terminals_",6,10,11,14,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","$0","$",5,7,12,15,20,25,"defaultActions","parseError","popStack","vstack","lstack","lex","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","newState","expected","yyval","errStr","showPosition","loc","_$","first_line","last_line","first_column","last_column","hash","_input","_more","_less","done","conditionStack","unput","more","less","pastInput","past","upcomingInput","pre","tempMatch","_currentRules","flex","begin","condition","conditions","topState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","readFileSync","cwd","read","charset","argv","webpackPolyfill","deprecate","paths","normalizeArray","allowAboveRoot","up","xs","res","splitPathRe","splitPath","filename","resolve","resolvedPath","resolvedAbsolute","normalize","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","delimiter","dirname","basename","ext","extname","drainQueue","draining","currentQueue","queue","noop","browser","version","versions","chdir","umask","get_blob","Builder","MSBlobBuilder","bag","builder","endings"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jsoneditor.map","sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","arguments","length","_create","treemode","textmode","modes","prototype","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","config","asText","clear","mixin","create","load","err","_onError","onError","log","error","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","Node","modeswitcher","dom","highlighter","selection","undefined","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","focusNode","domFocus","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","change","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","autoScrollStep","scrollTop","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","range","setSelectionOffset","getSelection","getSelectionOffset","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","nodeName","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","onChange","disabled","canUndo","canRedo","modeBox","searchBox","type","_onKeyDown","getNodeFromTarget","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","select","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","ace","indentation","Number","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","poweredBy","createTextNode","href","window","open","on","spellcheck","resize","force","sanitize","setValue","jsonlint","jsonString","validate","jsString","curr","charAt","prev","prevIsBrace","ii","cc","skipComment","parseString","quote","chars","push","parseKey","specialValues","key","regexp","test","indexOf","match","join","a","b","console","apply","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","Object","toString","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childs","childNodes","iMax","child","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","setStart","firstChild","setEnd","getInnerText","element","buffer","first","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","removeEventListener","detachEvent","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","appendNode","parent","insertBeforeNode","insertBefore","beforeNode","insertAfterNode","insertAfter","afterNode","removeNode","append","duplicateNode","clone","changeType","oldType","newType","moveNode","startParent","moveTo","startIndex","endParent","endIndex","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","timeout","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","innerHTML","expanded","setField","fieldEditable","ContextMenu","appendNodeFactory","_updateEditability","editable","path","unshift","setParent","getField","_getDomField","childValue","_getType","childField","arr","forEach","_getDomValue","getLevel","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","hide","_hasChilds","newTr","appendTr","updateIndexes","moveBefore","trTemp","AppendNode","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","concat","_updateDomValue","offsetTop","focusElement","elementName","drag","editableDiv","_duplicate","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","str","domValue","v","t","color","isEmpty","count","domField","oldField","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","_onDragStart","mousemove","_onDrag","mouseup","_onDragEnd","oldCursor","body","cursor","mouseX","pageX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","pageY","moved","offsetHeight","previousSibling","diffX","diffLevel","round","levelNext","_isChildOf","n","_createDomField","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","tdValue","srcElement","expandable","showContextMenu","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","_onDuplicate","_onRemove","_onInsertBefore","_onInsertAfter","lastNode","_lastNode","_getElementName","firstNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","newNode","_onAppend","_onChangeType","_onSort","direction","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","anchor","onClose","titles","items","submenu","click","submenuTitle","close","show","Array","lower","num","numFloat","isNaN","htmlEscaped","replace","substring","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","code","form","view","item","currentMode","currentTitle","box","createMenuItems","list","domItems","separator","li","domItem","button","divIcon","buttonSubmenu","buttonExpand","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","visibleSubmenu","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","windowHeight","innerHeight","windowScroll","windowBottom","anchorHeight","menuHeight","mousedown","mousewheel","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","e","trAppend","tdAppend","domText","paddingLeft","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","popStack","stack","vstack","lstack","lex","token","self","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","len","newState","expected","yyval","errStr","showPosition","line","loc","_$","first_line","last_line","first_column","last_column","slice","hash","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","more","less","pastInput","past","substr","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","acequire","isDark","cssClass","cssText","importCssString","exportAce","ns","_acequire","global","packaged","_define","original","ACE_NAMESPACE","acequirejs","deps","payload","payloads","parentId","l","dep","lookup","normalizeModule","moduleName","chunks","base","mod","uri","req","returnValue","getNativeFlags","regex","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","x","lastIndex","r2","source","_xregexp","captureNames","Empty","doesDefinePropertyWork","defineProperty","exception","toInteger","floor","bind","that","TypeError","args","bound","result","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","start","deleteCount","pos","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","map","filter","every","some","reduce","reduceRight","sought","lastIndexOf","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","keys","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","properties","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","dontEnum","now","getTime","ws","trim","trimBeginRegexp","trimEndRegexp","o","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssStylsheet","link","rel","getInnerWidth","parseInt","computedStyle","getInnerHeight","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","scrollbarWidth","inner","minWidth","outer","position","noScrollbar","offsetWidth","withScrollbar","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","proto","oop","Keys","ret","MODIFIER_KEYS",224,"KEY_MODS","ctrl","alt","option","shift","super","meta","command","cmd","FUNCTION_KEYS",27,32,33,34,35,36,37,38,39,40,44,45,46,96,97,98,99,100,101,102,103,104,105,"-13",112,113,114,115,116,117,118,119,120,121,122,123,144,145,"PRINTABLE_KEYS",48,49,50,51,52,53,54,55,56,57,59,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,107,109,110,187,188,189,190,191,192,219,220,221,222,"enter","escape","esc","del","mods","pow","keyCodeToString","keyString","fromCharCode","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addMouseWheelListener","factor","wheelDeltaX","wheelX","wheelY","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","timeouts","callbackName","startX","startY","timer","clicks","eventNames","isNewClick","clientX","clientY","_clicks","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","last","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copy","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","host","resetSelection","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","wrap","autocorrect","autocapitalize","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","charCodeAt","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","markUndoGroup","clearSelection","val","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","sqrt","calcRangeOrientation","row","end","cmp","column","DRAG_OFFSET","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","time","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","html","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","$cells","right","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","$blockScrolling","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","counter","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","types","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","onDragStart","cancelDrag","draggable","setDragImage","clearData","getTextRange","onDragEnd","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","url","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","s","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","all","moduleUrl","component","parts","sep","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","warn","forwardTo","handlesSet","defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","DefaultGutterHandler","MouseHandler","focusEditor","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","char","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","commands","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","h","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compare","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","func","toJSON","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","adjustedregex","matchcount","reportError","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","msg","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","keywords","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","codePoint","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","unicode","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","indent","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","$id","Anchor","$onChange","$clipPositionToDocument","$insertRight","delta","noClip","Document","$lines","_insertLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","$clipPosition","firstLine","lastLine","insertNewLine","insertLines","firstFullRow","lastFullRow","_removeLines","removeNewLine","newLine","removeLines","nl","secondLine","applyDeltas","deltas","revertDeltas","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","cache","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","changeRange","lineDif","consumePoint","point","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","updateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets",")","(","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","group","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","w","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","enable","isUndo","isInsert","lastDeltaIsInsert","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","addSplit","displayed","lastSplit","lastDocSplit","splits","displayLength","isCode","$wrapAsCode","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","destroy","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","backwards","matchIterator","_callback","$lineIterator","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","skipCurrent","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","bindKey","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","asDefault","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","getAllRanges","findNext","multiSelectAction","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","endCol","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","theme","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","number","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","inVirtualSelectionMode","linesMoved","rangeIndex","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","undoSelectionRange","redoSelectionRange","hasRedo","markClean","isClean","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","getCharacterWidth","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceReg","replaceFunc","tabIdx","classToUse","space","output","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","to","renderTokens","$measureNode","IE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","visibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","isRoot","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","flint","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","$vScrollBarAlwaysVisible","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","$theme","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","q","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","other","showOtherMarkers","othersActive","hideOtherMarkers","lengthDiff","distanceFromStart","otherPos","newPos","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","readonly","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","_inDocument","removeLineWidget","$updateRows","noWidgets","addLineWidget","zIndex","coverGutter","pixelHeight","onWidgetChanged","changedWidgets","fixedWidth","coverLine","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","JsonHighlightRules","MatchingBraceOutdent","openBracePos","context","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","CstyleBehaviour","selected","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","closing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","quotepos","$matchTokenType","iterator2","BaseFoldMode","commentRegex","forceMultiline","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","tab","worker","searchboxCss","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f|Ctrl-H|Command-Option-F","isReplace","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","checked","$syncOptions","noMatch","replaceAndFindNext","get_blob","Builder","MSBlobBuilder","bag","builder","endings"],"mappings":"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"} \ No newline at end of file diff --git a/dist/jsoneditor.min.js b/dist/jsoneditor.min.js index 0fe1494..b209fa1 100644 --- a/dist/jsoneditor.min.js +++ b/dist/jsoneditor.min.js @@ -23,30 +23,28 @@ * Copyright (c) 2011-2015 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 4.1.2 - * @date 2015-03-15 + * @version 4.1.3 + * @date 2015-03-17 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var o=s.getInternetExplorerVersion();if(-1!=o&&9>o)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");arguments.length&&this._create(e,t,i)}var o=i(1),r=i(2),s=i(3);n.modes={},n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype._delete=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=s.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,o=this.container,r=s.extend({},this.options);r.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var l="text"==a.data;if(i=this.getName(),t=this[l?"getText":"get"](),this._delete(),s.clear(this),s.extend(this,a.mixin),this.create(o,r),this.setName(i),this[l?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(c){}}catch(c){this._onError(c)}},n.prototype._onError=function(e){if("function"==typeof this.onError&&(s.log("WARNING: JSONEditor.onError is deprecated. Use options.error instead."),this.onError(e)),!this.options||"function"!=typeof this.options.error)throw e;this.options.error(e)},n.registerMode=function(e){var t,i;if(s.isArray(e))for(t=0;te&&i.scrollTop>0?(n+s-e)/3:e>r-s&&o+i.scrollTop3?(i.scrollTop+=o/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},c._createFrame=function(){function e(e){t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor",this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,l.addEventListener(this.frame,"focus",e,!0),l.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.className="expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.title="Collapse all fields",n.className="collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var o=document.createElement("button");o.className="undo separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.className="redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var c=a.create(this,this.options.modes,this.options.mode);this.menu.appendChild(c),this.dom.modeBox=c}this.options.search&&(this.searchBox=new r(this,this.menu))},c._onUndo=function(){this.history&&(this.history.undo(),this.options.change&&this.options.change())},c._onRedo=function(){this.history&&(this.history.redo(),this.options.change&&this.options.change())},c._onEvent=function(e){var t=e.target;"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(u=t);var i=s.getNodeFromTarget(t);i&&i.onEvent(e)},c._onKeyDown=function(e){var t=e.which||e.keyCode,i=e.ctrlKey,n=e.shiftKey,o=!1;if(9==t&&setTimeout(function(){l.selectContentEditable(u)},0),this.searchBox)if(i&&70==t)this.searchBox.dom.search.focus(),this.searchBox.dom.search.select(),o=!0;else if(114==t||i&&71==t){var r=!0;n?this.searchBox.previous(r):this.searchBox.next(r),o=!0}this.history&&(i&&!n&&90==t?(this._onUndo(),o=!0):i&&n&&90==t&&(this._onRedo(),o=!0)),o&&(e.preventDefault(),e.stopPropagation())},c._createTable=function(){var e=document.createElement("div");e.className="outer",this.contentOuter=e,this.content=document.createElement("div"),this.content.className="tree",e.appendChild(this.content),this.table=document.createElement("table"),this.table.className="tree",this.content.appendChild(this.table);var t;this.colgroupContent=document.createElement("colgroup"),"tree"===this.options.mode&&(t=document.createElement("col"),t.width="24px",this.colgroupContent.appendChild(t)),t=document.createElement("col"),t.width="24px",this.colgroupContent.appendChild(t),t=document.createElement("col"),this.colgroupContent.appendChild(t),this.table.appendChild(this.colgroupContent),this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.frame.appendChild(e)},e.exports=[{mode:"tree",mixin:c,data:"json"},{mode:"view",mixin:c,data:"json"},{mode:"form",mixin:c,data:"json"}]},function(e,t,i){var n;try{n=i(10),i(11),i(12),i(9)}catch(o){}var r=i(8),s=i(3),a={};a.create=function(e,t){t=t||{},this.options=t,this.indentation=t.indentation?Number(t.indentation):2,this.mode="code"==t.mode?"code":"text","code"==this.mode&&"undefined"==typeof n&&(this.mode="text",s.log("WARNING: Cannot load code editor, Ace library not loaded. Falling back to plain text editor"));var i=this;this.container=e,this.dom={},this.editor=void 0,this.textarea=void 0,this.width=e.clientWidth,this.height=e.clientHeight,this.frame=document.createElement("div"),this.frame.className="jsoneditor",this.frame.onclick=function(e){e.preventDefault()},this.frame.onkeydown=function(e){i._onKeyDown(e)},this.menu=document.createElement("div"),this.menu.className="menu",this.frame.appendChild(this.menu);var o=document.createElement("button");o.className="format",o.title="Format JSON data, with proper indentation and line feeds (Ctrl+\\)",this.menu.appendChild(o),o.onclick=function(){try{i.format()}catch(e){i._onError(e)}};var a=document.createElement("button");if(a.className="compact",a.title="Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)",this.menu.appendChild(a),a.onclick=function(){try{i.compact()}catch(e){i._onError(e)}},this.options&&this.options.modes&&this.options.modes.length){var l=r.create(this,this.options.modes,this.options.mode);this.menu.appendChild(l),this.dom.modeBox=l}if(this.content=document.createElement("div"),this.content.className="outer",this.frame.appendChild(this.content),this.container.appendChild(this.frame),"code"==this.mode){this.editorDom=document.createElement("div"),this.editorDom.style.height="100%",this.editorDom.style.width="100%",this.content.appendChild(this.editorDom);var c=n.edit(this.editorDom);c.setTheme("ace/theme/jsoneditor"),c.setShowPrintMargin(!1),c.setFontSize(13),c.getSession().setMode("ace/mode/json"),c.getSession().setTabSize(this.indentation),c.getSession().setUseSoftTabs(!0),c.getSession().setUseWrapMode(!0),this.editor=c;var h=document.createElement("a");h.appendChild(document.createTextNode("powered by ace")),h.href="http://ace.ajax.org",h.target="_blank",h.className="poweredBy",h.onclick=function(){window.open(h.href,h.target)},this.menu.appendChild(h),t.change&&c.on("change",function(){t.change()})}else{var u=document.createElement("textarea");u.className="text",u.spellcheck=!1,this.content.appendChild(u),this.textarea=u,t.change&&(null===this.textarea.oninput?this.textarea.oninput=function(){t.change()}:this.textarea.onchange=function(){t.change()})}},a._onKeyDown=function(e){var t=e.which||e.keyCode,i=!1;220==t&&e.ctrlKey&&(e.shiftKey?this.compact():this.format(),i=!0),i&&(e.preventDefault(),e.stopPropagation())},a._delete=function(){this.frame&&this.container&&this.frame.parentNode==this.container&&this.container.removeChild(this.frame)},a._onError=function(e){if("function"==typeof this.onError&&(s.log("WARNING: JSONEditor.onError is deprecated. Use options.error instead."),this.onError(e)),!this.options||"function"!=typeof this.options.error)throw e;this.options.error(e)},a.compact=function(){var e=this.get(),t=JSON.stringify(e);this.setText(t)},a.format=function(){var e=this.get(),t=JSON.stringify(e,null,this.indentation);this.setText(t)},a.focus=function(){this.textarea&&this.textarea.focus(),this.editor&&this.editor.focus()},a.resize=function(){if(this.editor){var e=!1;this.editor.resize(e)}},a.set=function(e){this.setText(JSON.stringify(e,null,this.indentation))},a.get=function(){var e,t=this.getText();try{e=s.parse(t)}catch(i){t=s.sanitize(t),this.setText(t),e=s.parse(t)}return e},a.getText=function(){return this.textarea?this.textarea.value:this.editor?this.editor.getValue():""},a.setText=function(e){this.textarea&&(this.textarea.value=e),this.editor&&this.editor.setValue(e,-1)},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,i){var n=i(15);t.parse=function(e){try{return JSON.parse(e)}catch(i){throw t.validate(e),i}},t.sanitize=function(e){function t(){return e.charAt(c)}function i(){return e.charAt(c+1)}function n(){return e.charAt(c-1)}function o(){for(var t=c-1;t>=0;){var i=e.charAt(t);if("{"===i)return!0;if(" "!==i&&"\n"!==i&&"\r"!==i)return!1;t--}return!1}function r(){for(c+=2;cn;n++){var r=i[n];r.style&&r.removeAttribute("style");var s=r.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var o=e.childNodes,r="",s=0,a=o.length;a>s;s++){var l=o[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=o[s-1],h=c?c.nodeName:void 0;h&&"DIV"!=h&&"P"!=h&&"BR"!=h&&(r+="\n",i.flush()),r+=t.getInnerText(l,i),i.set("\n")}else"BR"==l.nodeName?(r+=i.flush(),i.set("\n")):r+=t.getInnerText(l,i)}return r}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?i.flush():""},t.getInternetExplorerVersion=function(){if(-1==r){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,i=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=i.exec(t)&&(e=parseFloat(RegExp.$1))}r=e}return r},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var r=-1;t.addEventListener=function(e,i,n,o){if(e.addEventListener)return void 0===o&&(o=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.addEventListener(i,n,o),n;if(e.attachEvent){var r=function(){return n.call(e,window.event)};return e.attachEvent("on"+i,r),r}},t.removeEventListener=function(e,i,n,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.removeEventListener(i,n,o)):e.detachEvent&&e.detachEvent("on"+i,n)}},function(e){function t(){this.locked=!1}t.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},t.prototype.unhighlight=function(){if(!this.locked){var e=this;this.node&&(this._cancelUnhighlight(),this.unhighlightTimer=setTimeout(function(){e.node.setHighlight(!1),e.node=void 0,e.unhighlightTimer=void 0},0))}},t.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},t.prototype.lock=function(){this.locked=!0},t.prototype.unlock=function(){this.locked=!1},e.exports=t},function(e,t,i){function n(e){this.editor=e,this.clear(),this.actions={editField:{undo:function(e){e.node.updateField(e.oldValue)},redo:function(e){e.node.updateField(e.newValue)}},editValue:{undo:function(e){e.node.updateValue(e.oldValue)},redo:function(e){e.node.updateValue(e.newValue)}},appendNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.appendChild(e.node)}},insertBeforeNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.insertBefore(e.node,e.beforeNode)}},insertAfterNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.insertAfter(e.node,e.afterNode)}},removeNode:{undo:function(e){var t=e.parent,i=t.childs[e.index]||t.append;t.insertBefore(e.node,i)},redo:function(e){e.parent.removeChild(e.node)}},duplicateNode:{undo:function(e){e.parent.removeChild(e.clone)},redo:function(e){e.parent.insertAfter(e.clone,e.node)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},moveNode:{undo:function(e){e.startParent.moveTo(e.node,e.startIndex)},redo:function(e){e.endParent.moveTo(e.node,e.endIndex)}},sort:{undo:function(e){var t=e.node;t.hideChilds(),t.sort=e.oldSort,t.childs=e.oldChilds,t.showChilds()},redo:function(e){var t=e.node;t.hideChilds(),t.sort=e.newSort,t.childs=e.newChilds,t.showChilds()}}}}var o=i(3);n.prototype.onChange=function(){},n.prototype.add=function(e,t){this.index++,this.history[this.index]={action:e,params:t,timestamp:new Date},this.index=0},n.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},t.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},t.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(r)})},t.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},t.prototype._onDelayedSearch=function(){this._clearDelay();var e=this;this.timeout=setTimeout(function(t){e._onSearch(t)},this.delay)},t.prototype._onSearch=function(e,t){this._clearDelay();var i=this.dom.search.value,n=i.length>0?i:void 0;if(n!=this.lastText||t)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var o=this.results.length;switch(o){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=o+" results"}}else this.dom.results.innerHTML=""},t.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(e),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(e,!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},t.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},e.exports=t},function(e,t,i){function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null))}var o=i(13),r=i(14),s=i(3);n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,"tree"===this.editor.options.mode&&"function"==typeof this.editor.options.editable)){var e=this.editor.options.editable({field:this.field,value:this.value,path:this.path()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.path=function(){for(var e=this,t=[];e;){var i=void 0!=e.field?e.field:e.index;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.setParent=function(e){this.parent=e},n.prototype.setField=function(e,t){this.field=e,this.fieldEditable=t===!0},n.prototype.getField=function(){return void 0===this.field&&this._getDomField(),this.field},n.prototype.setValue=function(e,t){var i,o,r=this.childs;if(r)for(;r.length;)this.removeChild(r[0]);if(this.type=this._getType(e),t&&t!=this.type){if("string"!=t||"auto"!=this.type)throw new Error('Type mismatch: cannot cast value of type "'+this.type+' to the specified type "'+t+'"');this.type=t}if("array"==this.type){this.childs=[];for(var s=0,a=e.length;a>s;s++)i=e[s],void 0===i||i instanceof Function||(o=new n(this.editor,{value:i}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(i=e[l],void 0===i||i instanceof Function||(o=new n(this.editor,{field:l,value:i}),this.appendChild(o)));this.value=""}else this.childs=void 0,this.value=e},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),o=t.nextSibling;o?i.insertBefore(n,o):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof a?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),o=t.getDom(),r=o?o.parentNode:void 0;o&&r&&r.insertBefore(n,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),i=i.concat(r)}if(void 0!=n){var s=!1;0==r.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(), -s.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){s.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype._duplicate=function(e){var t=e.clone();return this.insertAfter(t,e),t},n.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return this.updateDom({updateIndexes:!0}),i}}return void 0},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var o=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,n&&(o?n.insertBefore(this.getDom(),o):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&(this.value="string"==e?String(this.value):this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=s.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var i=this._unescapeHTML(this.valueInnerText);t=this._stringCast(i)}if(t!==this.value){var n=this.value;this.value=t,this.editor._onAction("editValue",{node:this,oldValue:n,newValue:t,oldSelection:this.editor.selection,newSelection:this.editor.getSelection()})}}catch(o){if(this.value=void 0,e!==!0)throw o}},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=this.value,i="auto"==this.type?s.type(t):this.type,n="string"==i&&s.isUrl(t),o="";o=n&&!this.editable.value?"":"string"==i?"green":"number"==i?"red":"boolean"==i?"darkorange":this._hasChilds()?"":null===t?"#004ED0":"black",e.style.color=o;var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r?s.addClassName(e,"empty"):s.removeClassName(e,"empty"),n?s.addClassName(e,"url"):s.removeClassName(e,"url"),"array"==i||"object"==i){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else"string"==i&&s.isUrl(t)?this.editable.value&&(e.title="Ctrl+Click or Ctrl+Enter to open url in new window"):e.title="";this.searchValueActive?s.addClassName(e,"highlight-active"):s.removeClassName(e,"highlight-active"),this.searchValue?s.addClassName(e,"highlight"):s.removeClassName(e,"highlight"),s.stripFormatting(e)}},n.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?s.addClassName(e,"empty"):s.removeClassName(e,"empty"),this.searchFieldActive?s.addClassName(e,"highlight-active"):s.removeClassName(e,"highlight-active"),this.searchField?s.addClassName(e,"highlight"):s.removeClassName(e,"highlight"),s.stripFormatting(e)}},n.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=s.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);if(t!==this.field){var i=this.field;this.field=t,this.editor._onAction("editField",{node:this,oldValue:i,newValue:t,oldSelection:this.editor.selection,newSelection:this.editor.getSelection()})}}catch(n){if(this.field=void 0,e!==!0)throw n}},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");e.drag=i,i.className="dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),o=document.createElement("button");e.menu=o,o.className="contextmenu",o.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.prototype._onDragStart=function(e){var t=this;this.mousemove||(this.mousemove=s.addEventListener(document,"mousemove",function(e){t._onDrag(e)})),this.mouseup||(this.mouseup=s.addEventListener(document,"mouseup",function(e){t._onDragEnd(e)})),this.editor.highlighter.lock(),this.drag={oldCursor:document.body.style.cursor,startParent:this.parent,startIndex:this.parent.childs.indexOf(this),mouseX:e.pageX,level:this.getLevel()},document.body.style.cursor="move",e.preventDefault()},n.prototype._onDrag=function(e){var t,i,o,r,l,c,h,u,d,g,f,p,m,v,A=e.pageY,w=e.pageX,C=!1;if(t=this.dom.tr,d=s.getAbsoluteTop(t),p=t.offsetHeight,d>A){i=t;do i=i.previousSibling,h=n.getNodeFromTarget(i),g=i?s.getAbsoluteTop(i):0;while(i&&g>A);h&&!h.parent&&(h=void 0),h||(c=t.parentNode.firstChild,i=c?c.nextSibling:void 0,h=n.getNodeFromTarget(i),h==this&&(h=void 0)),h&&(i=h.dom.tr,g=i?s.getAbsoluteTop(i):0,A>g+p&&(h=void 0)),h&&(h.parent.moveBefore(this,h),C=!0)}else if(l=this.expanded&&this.append?this.append.getDom():this.dom.tr,r=l?l.nextSibling:void 0){f=s.getAbsoluteTop(r),o=r;do u=n.getNodeFromTarget(o),o&&(m=o.nextSibling?s.getAbsoluteTop(o.nextSibling):0,v=o?m-f:0,1==u.parent.childs.length&&u.parent.childs[0]==this&&(d+=23)),o=o.nextSibling;while(o&&A>d+v);if(u&&u.parent){var E=w-this.drag.mouseX,F=Math.round(E/24/2),y=this.drag.level+F,b=u.getLevel();for(i=u.dom.tr.previousSibling;y>b&&i;){if(h=n.getNodeFromTarget(i),h==this||h._isChildOf(this));else{if(!(h instanceof a))break;var x=h.parent.childs;if(!(x.length>1||1==x.length&&x[0]!=this))break;u=n.getNodeFromTarget(i),b=u.getLevel()}i=i.previousSibling}l.nextSibling!=u.dom.tr&&(u.parent.moveBefore(this,u),C=!0)}}C&&(this.drag.mouseX=w,this.drag.level=this.getLevel()),this.editor.startAutoScroll(A),e.preventDefault()},n.prototype._onDragEnd=function(e){var t={node:this,startParent:this.drag.startParent,startIndex:this.drag.startIndex,endParent:this.parent,endIndex:this.parent.childs.indexOf(this)};(t.startParent!=t.endParent||t.startIndex!=t.endIndex)&&this.editor._onAction("moveNode",t),document.body.style.cursor=this.drag.oldCursor,this.editor.highlighter.unlock(),delete this.drag,this.mousemove&&(s.removeEventListener(document,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(s.removeEventListener(document,"mouseup",this.mouseup),delete this.mouseup),this.editor.stopAutoScroll(),e.preventDefault()},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(this.dom.tr.className=e?"highlight":"",this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="field"):i.className="readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n)}var o=this.dom.value;if(o){var r=this.childs?this.childs.length:0;o.innerHTML="array"==this.type?"["+r+"]":"object"==this.type?"{"+r+"}":this._escapeHTML(this.value)}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var i=e.dom.field;i&&(i.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},n.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.className="readonly",e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.className="readonly",e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),e.className="value",e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.className="value",e.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"expanded":"collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="invisible",e.title=""),e},n.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),i=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var o=document.createElement("td");o.className="tree",n.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var r=document.createElement("td");r.className="tree",n.appendChild(r),e.field=this._createDomField(),r.appendChild(e.field),e.tdField=r;var s=document.createElement("td");s.className="tree",n.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="tree",n.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},n.prototype.onEvent=function(e){var t,i=e.type,n=e.target||e.srcElement,o=this.dom,r=this,a=this._hasChilds();if((n==o.drag||n==o.menu)&&("mouseover"==i?this.editor.highlighter.highlight(this):"mouseout"==i&&this.editor.highlighter.unhighlight()),"mousedown"==i&&n==o.drag&&this._onDragStart(e),"click"==i&&n==o.menu){var l=r.editor.highlighter;l.highlight(r),l.lock(),s.addClassName(o.menu,"selected"),this.showContextMenu(o.menu,function(){s.removeClassName(o.menu,"selected"),l.unlock(),l.unhighlight()})}if("click"==i&&n==o.expand&&a){var c=e.ctrlKey;this._onExpand(c)}var h=o.value;if(n==h)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(h.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&s.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){r._getDomValue(!0),r._updateDomValue()},1)}var u=o.field;if(n==u)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(u.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}var d=o.tree;if(n==d.parentNode)switch(i){case"click":var g=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageXn[i]?t:e[i]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t);return i.substring(1,i.length-1)},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',i=s.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ")},n.prototype._escapeJSON=function(e){for(var t="",i=0,n=e.length;n>i;){var o=e.charAt(i);"\n"==o?t+="\\n":"\\"==o?(t+=o,i++,o=e.charAt(i),-1=='"\\/bfnrtu'.indexOf(o)&&(t+="\\"),t+=o):t+='"'==o?'\\"':o,i++}return t};var a=r(n);e.exports=n},function(e,t,i){function n(e,t,i){function n(t){e.setMode(t);var i=e.dom&&e.dom.modeBox;i&&i.focus()}for(var r={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;ar;++r){var l=s(e,t[r]);if(!l&&o.original)return o.original.apply(window,arguments);n.push(l)}i&&i.apply(null,n)}else{if("string"==typeof t){var c=s(e,t);return!c&&o.original?o.original.apply(window,arguments):(i&&i(),c)}if(o.original)return o.original.apply(window,arguments)}},r=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return r(e,i[0])+"!"+r(e,i[1])}if("."==t.charAt(0)){var n=e.split("/").slice(0,-1).join("/");for(t=n+"/"+t;-1!==t.indexOf(".")&&o!=t;){var o=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},s=function(e,t){t=r(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var s={},a={id:t,uri:"",exports:s,packaged:!0},l=function(e,i){return o(t,e,i)},c=i(l,s,a);s=c||a.exports,n.modules[t]=s,delete n.payloads[t]}i=n.modules[t]=s||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(){"use strict";function e(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function t(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&t(l,"")>-1&&(a=RegExp(this.source,i.replace.call(e(this),"g","")),i.replace.call(r.slice(l.index),a,function(){for(var e=1;el.index&&this.lastIndex--}return l},o||(RegExp.prototype.test=function(e){var t=i.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function e(){}function t(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function i(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(t){var i=this;if("function"!=typeof i)throw new TypeError("Function.prototype.bind called on incompatible "+i);var n=u.call(arguments,1),o=function(){if(this instanceof o){var e=i.apply(this,n.concat(u.call(arguments)));return Object(e)===e?e:this}return i.apply(t,n.concat(u.call(arguments)))};return i.prototype&&(e.prototype=i.prototype,o.prototype=new e,e.prototype=null),o});var n,o,r,s,a,l=Function.prototype.call,c=Array.prototype,h=Object.prototype,u=c.slice,d=l.bind(h.toString),g=l.bind(h.hasOwnProperty);if((a=g(h,"__defineGetter__"))&&(n=l.bind(h.__defineGetter__),o=l.bind(h.__defineSetter__),r=l.bind(h.__lookupGetter__),s=l.bind(h.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];return i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),t+1==i.length,t+1==i.length?!0:void 0}()){var f=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?f.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(u.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:0>e&&(e=Math.max(i+e,0)),i>e+t||(t=i-e);var n=this.slice(e,e+t),o=u.call(arguments,2),r=o.length; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var o=s.getInternetExplorerVersion();if(-1!=o&&9>o)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");arguments.length&&this._create(e,t,i)}var o=i(1),r=i(2),s=i(3);n.modes={},n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype._delete=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=s.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,o=this.container,r=s.extend({},this.options);r.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var l="text"==a.data;if(i=this.getName(),t=this[l?"getText":"get"](),this._delete(),s.clear(this),s.extend(this,a.mixin),this.create(o,r),this.setName(i),this[l?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(c){}}catch(c){this._onError(c)}},n.prototype._onError=function(e){if("function"==typeof this.onError&&(s.log("WARNING: JSONEditor.onError is deprecated. Use options.error instead."),this.onError(e)),!this.options||"function"!=typeof this.options.error)throw e;this.options.error(e)},n.registerMode=function(e){var t,i;if(s.isArray(e))for(t=0;te&&i.scrollTop>0?(n+s-e)/3:e>r-s&&o+i.scrollTop3?(i.scrollTop+=o/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},c._createFrame=function(){function e(e){t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor",this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,l.addEventListener(this.frame,"focus",e,!0),l.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.className="expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.title="Collapse all fields",n.className="collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var o=document.createElement("button");o.className="undo separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.className="redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var c=a.create(this,this.options.modes,this.options.mode);this.menu.appendChild(c),this.dom.modeBox=c}this.options.search&&(this.searchBox=new r(this,this.menu))},c._onUndo=function(){this.history&&(this.history.undo(),this.options.change&&this.options.change())},c._onRedo=function(){this.history&&(this.history.redo(),this.options.change&&this.options.change())},c._onEvent=function(e){var t=e.target;"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(u=t);var i=s.getNodeFromTarget(t);i&&i.onEvent(e)},c._onKeyDown=function(e){var t=e.which||e.keyCode,i=e.ctrlKey,n=e.shiftKey,o=!1;if(9==t&&setTimeout(function(){l.selectContentEditable(u)},0),this.searchBox)if(i&&70==t)this.searchBox.dom.search.focus(),this.searchBox.dom.search.select(),o=!0;else if(114==t||i&&71==t){var r=!0;n?this.searchBox.previous(r):this.searchBox.next(r),o=!0}this.history&&(i&&!n&&90==t?(this._onUndo(),o=!0):i&&n&&90==t&&(this._onRedo(),o=!0)),o&&(e.preventDefault(),e.stopPropagation())},c._createTable=function(){var e=document.createElement("div");e.className="outer",this.contentOuter=e,this.content=document.createElement("div"),this.content.className="tree",e.appendChild(this.content),this.table=document.createElement("table"),this.table.className="tree",this.content.appendChild(this.table);var t;this.colgroupContent=document.createElement("colgroup"),"tree"===this.options.mode&&(t=document.createElement("col"),t.width="24px",this.colgroupContent.appendChild(t)),t=document.createElement("col"),t.width="24px",this.colgroupContent.appendChild(t),t=document.createElement("col"),this.colgroupContent.appendChild(t),this.table.appendChild(this.colgroupContent),this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.frame.appendChild(e)},e.exports=[{mode:"tree",mixin:c,data:"json"},{mode:"view",mixin:c,data:"json"},{mode:"form",mixin:c,data:"json"}]},function(e,t,i){var n;try{n=i(9)}catch(o){}var r=i(8),s=i(3),a={};a.create=function(e,t){t=t||{},this.options=t,this.indentation=t.indentation?Number(t.indentation):2,this.mode="code"==t.mode?"code":"text","code"==this.mode&&"undefined"==typeof n&&(this.mode="text",s.log("WARNING: Cannot load code editor, Ace library not loaded. Falling back to plain text editor"));var i=this;this.container=e,this.dom={},this.editor=void 0,this.textarea=void 0,this.width=e.clientWidth,this.height=e.clientHeight,this.frame=document.createElement("div"),this.frame.className="jsoneditor",this.frame.onclick=function(e){e.preventDefault()},this.frame.onkeydown=function(e){i._onKeyDown(e)},this.menu=document.createElement("div"),this.menu.className="menu",this.frame.appendChild(this.menu);var o=document.createElement("button");o.className="format",o.title="Format JSON data, with proper indentation and line feeds (Ctrl+\\)",this.menu.appendChild(o),o.onclick=function(){try{i.format()}catch(e){i._onError(e)}};var a=document.createElement("button");if(a.className="compact",a.title="Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)",this.menu.appendChild(a),a.onclick=function(){try{i.compact()}catch(e){i._onError(e)}},this.options&&this.options.modes&&this.options.modes.length){var l=r.create(this,this.options.modes,this.options.mode);this.menu.appendChild(l),this.dom.modeBox=l}if(this.content=document.createElement("div"),this.content.className="outer",this.frame.appendChild(this.content),this.container.appendChild(this.frame),"code"==this.mode){this.editorDom=document.createElement("div"),this.editorDom.style.height="100%",this.editorDom.style.width="100%",this.content.appendChild(this.editorDom);var c=n.edit(this.editorDom);c.setTheme("ace/theme/jsoneditor"),c.setShowPrintMargin(!1),c.setFontSize(13),c.getSession().setMode("ace/mode/json"),c.getSession().setTabSize(this.indentation),c.getSession().setUseSoftTabs(!0),c.getSession().setUseWrapMode(!0),this.editor=c;var h=document.createElement("a");h.appendChild(document.createTextNode("powered by ace")),h.href="http://ace.ajax.org",h.target="_blank",h.className="poweredBy",h.onclick=function(){window.open(h.href,h.target)},this.menu.appendChild(h),t.change&&c.on("change",function(){t.change()})}else{var u=document.createElement("textarea");u.className="text",u.spellcheck=!1,this.content.appendChild(u),this.textarea=u,t.change&&(null===this.textarea.oninput?this.textarea.oninput=function(){t.change()}:this.textarea.onchange=function(){t.change()})}},a._onKeyDown=function(e){var t=e.which||e.keyCode,i=!1;220==t&&e.ctrlKey&&(e.shiftKey?this.compact():this.format(),i=!0),i&&(e.preventDefault(),e.stopPropagation())},a._delete=function(){this.frame&&this.container&&this.frame.parentNode==this.container&&this.container.removeChild(this.frame)},a._onError=function(e){if("function"==typeof this.onError&&(s.log("WARNING: JSONEditor.onError is deprecated. Use options.error instead."),this.onError(e)),!this.options||"function"!=typeof this.options.error)throw e;this.options.error(e)},a.compact=function(){var e=this.get(),t=JSON.stringify(e);this.setText(t)},a.format=function(){var e=this.get(),t=JSON.stringify(e,null,this.indentation);this.setText(t)},a.focus=function(){this.textarea&&this.textarea.focus(),this.editor&&this.editor.focus()},a.resize=function(){if(this.editor){var e=!1;this.editor.resize(e)}},a.set=function(e){this.setText(JSON.stringify(e,null,this.indentation))},a.get=function(){var e,t=this.getText();try{e=s.parse(t)}catch(i){t=s.sanitize(t),this.setText(t),e=s.parse(t)}return e},a.getText=function(){return this.textarea?this.textarea.value:this.editor?this.editor.getValue():""},a.setText=function(e){this.textarea&&(this.textarea.value=e),this.editor&&this.editor.setValue(e,-1)},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,i){var n=i(12);t.parse=function(e){try{return JSON.parse(e)}catch(i){throw t.validate(e),i}},t.sanitize=function(e){function t(){return e.charAt(c)}function i(){return e.charAt(c+1)}function n(){return e.charAt(c-1)}function o(){for(var t=c-1;t>=0;){var i=e.charAt(t);if("{"===i)return!0;if(" "!==i&&"\n"!==i&&"\r"!==i)return!1;t--}return!1}function r(){for(c+=2;cn;n++){var r=i[n];r.style&&r.removeAttribute("style");var s=r.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var o=e.childNodes,r="",s=0,a=o.length;a>s;s++){var l=o[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=o[s-1],h=c?c.nodeName:void 0;h&&"DIV"!=h&&"P"!=h&&"BR"!=h&&(r+="\n",i.flush()),r+=t.getInnerText(l,i),i.set("\n")}else"BR"==l.nodeName?(r+=i.flush(),i.set("\n")):r+=t.getInnerText(l,i)}return r}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?i.flush():""},t.getInternetExplorerVersion=function(){if(-1==r){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,i=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=i.exec(t)&&(e=parseFloat(RegExp.$1))}r=e}return r},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var r=-1;t.addEventListener=function(e,i,n,o){if(e.addEventListener)return void 0===o&&(o=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.addEventListener(i,n,o),n;if(e.attachEvent){var r=function(){return n.call(e,window.event)};return e.attachEvent("on"+i,r),r}},t.removeEventListener=function(e,i,n,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.removeEventListener(i,n,o)):e.detachEvent&&e.detachEvent("on"+i,n)}},function(e){function t(){this.locked=!1}t.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},t.prototype.unhighlight=function(){if(!this.locked){var e=this;this.node&&(this._cancelUnhighlight(),this.unhighlightTimer=setTimeout(function(){e.node.setHighlight(!1),e.node=void 0,e.unhighlightTimer=void 0},0))}},t.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},t.prototype.lock=function(){this.locked=!0},t.prototype.unlock=function(){this.locked=!1},e.exports=t},function(e,t,i){function n(e){this.editor=e,this.clear(),this.actions={editField:{undo:function(e){e.node.updateField(e.oldValue)},redo:function(e){e.node.updateField(e.newValue)}},editValue:{undo:function(e){e.node.updateValue(e.oldValue)},redo:function(e){e.node.updateValue(e.newValue)}},appendNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.appendChild(e.node)}},insertBeforeNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.insertBefore(e.node,e.beforeNode)}},insertAfterNode:{undo:function(e){e.parent.removeChild(e.node)},redo:function(e){e.parent.insertAfter(e.node,e.afterNode)}},removeNode:{undo:function(e){var t=e.parent,i=t.childs[e.index]||t.append;t.insertBefore(e.node,i)},redo:function(e){e.parent.removeChild(e.node)}},duplicateNode:{undo:function(e){e.parent.removeChild(e.clone)},redo:function(e){e.parent.insertAfter(e.clone,e.node)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},moveNode:{undo:function(e){e.startParent.moveTo(e.node,e.startIndex)},redo:function(e){e.endParent.moveTo(e.node,e.endIndex)}},sort:{undo:function(e){var t=e.node;t.hideChilds(),t.sort=e.oldSort,t.childs=e.oldChilds,t.showChilds()},redo:function(e){var t=e.node;t.hideChilds(),t.sort=e.newSort,t.childs=e.newChilds,t.showChilds()}}}}var o=i(3);n.prototype.onChange=function(){},n.prototype.add=function(e,t){this.index++,this.history[this.index]={action:e,params:t,timestamp:new Date},this.index=0},n.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},t.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},t.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(r)})},t.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},t.prototype._onDelayedSearch=function(){this._clearDelay();var e=this;this.timeout=setTimeout(function(t){e._onSearch(t)},this.delay)},t.prototype._onSearch=function(e,t){this._clearDelay();var i=this.dom.search.value,n=i.length>0?i:void 0;if(n!=this.lastText||t)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var o=this.results.length;switch(o){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=o+" results"}}else this.dom.results.innerHTML=""},t.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(e),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(e,!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},t.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},e.exports=t},function(e,t,i){function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null))}var o=i(10),r=i(11),s=i(3);n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,"tree"===this.editor.options.mode&&"function"==typeof this.editor.options.editable)){var e=this.editor.options.editable({field:this.field,value:this.value,path:this.path()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.path=function(){for(var e=this,t=[];e;){var i=void 0!=e.field?e.field:e.index;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.setParent=function(e){this.parent=e},n.prototype.setField=function(e,t){this.field=e,this.fieldEditable=t===!0},n.prototype.getField=function(){return void 0===this.field&&this._getDomField(),this.field},n.prototype.setValue=function(e,t){var i,o,r=this.childs;if(r)for(;r.length;)this.removeChild(r[0]);if(this.type=this._getType(e),t&&t!=this.type){if("string"!=t||"auto"!=this.type)throw new Error('Type mismatch: cannot cast value of type "'+this.type+' to the specified type "'+t+'"');this.type=t}if("array"==this.type){this.childs=[];for(var s=0,a=e.length;a>s;s++)i=e[s],void 0===i||i instanceof Function||(o=new n(this.editor,{value:i}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(i=e[l],void 0===i||i instanceof Function||(o=new n(this.editor,{field:l,value:i}),this.appendChild(o)));this.value=""}else this.childs=void 0,this.value=e},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),o=t.nextSibling;o?i.insertBefore(n,o):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof a?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),o=t.getDom(),r=o?o.parentNode:void 0;o&&r&&r.insertBefore(n,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),i=i.concat(r)}if(void 0!=n){var s=!1;0==r.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(), +s.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){s.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype._duplicate=function(e){var t=e.clone();return this.insertAfter(t,e),t},n.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return this.updateDom({updateIndexes:!0}),i}}return void 0},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var o=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,n&&(o?n.insertBefore(this.getDom(),o):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&(this.value="string"==e?String(this.value):this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=s.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var i=this._unescapeHTML(this.valueInnerText);t=this._stringCast(i)}if(t!==this.value){var n=this.value;this.value=t,this.editor._onAction("editValue",{node:this,oldValue:n,newValue:t,oldSelection:this.editor.selection,newSelection:this.editor.getSelection()})}}catch(o){if(this.value=void 0,e!==!0)throw o}},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=this.value,i="auto"==this.type?s.type(t):this.type,n="string"==i&&s.isUrl(t),o="";o=n&&!this.editable.value?"":"string"==i?"green":"number"==i?"red":"boolean"==i?"darkorange":this._hasChilds()?"":null===t?"#004ED0":"black",e.style.color=o;var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r?s.addClassName(e,"empty"):s.removeClassName(e,"empty"),n?s.addClassName(e,"url"):s.removeClassName(e,"url"),"array"==i||"object"==i){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else"string"==i&&s.isUrl(t)?this.editable.value&&(e.title="Ctrl+Click or Ctrl+Enter to open url in new window"):e.title="";this.searchValueActive?s.addClassName(e,"highlight-active"):s.removeClassName(e,"highlight-active"),this.searchValue?s.addClassName(e,"highlight"):s.removeClassName(e,"highlight"),s.stripFormatting(e)}},n.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?s.addClassName(e,"empty"):s.removeClassName(e,"empty"),this.searchFieldActive?s.addClassName(e,"highlight-active"):s.removeClassName(e,"highlight-active"),this.searchField?s.addClassName(e,"highlight"):s.removeClassName(e,"highlight"),s.stripFormatting(e)}},n.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=s.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);if(t!==this.field){var i=this.field;this.field=t,this.editor._onAction("editField",{node:this,oldValue:i,newValue:t,oldSelection:this.editor.selection,newSelection:this.editor.getSelection()})}}catch(n){if(this.field=void 0,e!==!0)throw n}},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");e.drag=i,i.className="dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),o=document.createElement("button");e.menu=o,o.className="contextmenu",o.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.prototype._onDragStart=function(e){var t=this;this.mousemove||(this.mousemove=s.addEventListener(document,"mousemove",function(e){t._onDrag(e)})),this.mouseup||(this.mouseup=s.addEventListener(document,"mouseup",function(e){t._onDragEnd(e)})),this.editor.highlighter.lock(),this.drag={oldCursor:document.body.style.cursor,startParent:this.parent,startIndex:this.parent.childs.indexOf(this),mouseX:e.pageX,level:this.getLevel()},document.body.style.cursor="move",e.preventDefault()},n.prototype._onDrag=function(e){var t,i,o,r,l,c,h,u,d,g,f,p,m,v,A=e.pageY,w=e.pageX,C=!1;if(t=this.dom.tr,d=s.getAbsoluteTop(t),p=t.offsetHeight,d>A){i=t;do i=i.previousSibling,h=n.getNodeFromTarget(i),g=i?s.getAbsoluteTop(i):0;while(i&&g>A);h&&!h.parent&&(h=void 0),h||(c=t.parentNode.firstChild,i=c?c.nextSibling:void 0,h=n.getNodeFromTarget(i),h==this&&(h=void 0)),h&&(i=h.dom.tr,g=i?s.getAbsoluteTop(i):0,A>g+p&&(h=void 0)),h&&(h.parent.moveBefore(this,h),C=!0)}else if(l=this.expanded&&this.append?this.append.getDom():this.dom.tr,r=l?l.nextSibling:void 0){f=s.getAbsoluteTop(r),o=r;do u=n.getNodeFromTarget(o),o&&(m=o.nextSibling?s.getAbsoluteTop(o.nextSibling):0,v=o?m-f:0,1==u.parent.childs.length&&u.parent.childs[0]==this&&(d+=23)),o=o.nextSibling;while(o&&A>d+v);if(u&&u.parent){var E=w-this.drag.mouseX,F=Math.round(E/24/2),y=this.drag.level+F,b=u.getLevel();for(i=u.dom.tr.previousSibling;y>b&&i;){if(h=n.getNodeFromTarget(i),h==this||h._isChildOf(this));else{if(!(h instanceof a))break;var x=h.parent.childs;if(!(x.length>1||1==x.length&&x[0]!=this))break;u=n.getNodeFromTarget(i),b=u.getLevel()}i=i.previousSibling}l.nextSibling!=u.dom.tr&&(u.parent.moveBefore(this,u),C=!0)}}C&&(this.drag.mouseX=w,this.drag.level=this.getLevel()),this.editor.startAutoScroll(A),e.preventDefault()},n.prototype._onDragEnd=function(e){var t={node:this,startParent:this.drag.startParent,startIndex:this.drag.startIndex,endParent:this.parent,endIndex:this.parent.childs.indexOf(this)};(t.startParent!=t.endParent||t.startIndex!=t.endIndex)&&this.editor._onAction("moveNode",t),document.body.style.cursor=this.drag.oldCursor,this.editor.highlighter.unlock(),delete this.drag,this.mousemove&&(s.removeEventListener(document,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(s.removeEventListener(document,"mouseup",this.mouseup),delete this.mouseup),this.editor.stopAutoScroll(),e.preventDefault()},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(this.dom.tr.className=e?"highlight":"",this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="field"):i.className="readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n)}var o=this.dom.value;if(o){var r=this.childs?this.childs.length:0;o.innerHTML="array"==this.type?"["+r+"]":"object"==this.type?"{"+r+"}":this._escapeHTML(this.value)}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var i=e.dom.field;i&&(i.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},n.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.className="readonly",e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.className="readonly",e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),e.className="value",e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.className="value",e.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"expanded":"collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="invisible",e.title=""),e},n.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),i=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var o=document.createElement("td");o.className="tree",n.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var r=document.createElement("td");r.className="tree",n.appendChild(r),e.field=this._createDomField(),r.appendChild(e.field),e.tdField=r;var s=document.createElement("td");s.className="tree",n.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="tree",n.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},n.prototype.onEvent=function(e){var t,i=e.type,n=e.target||e.srcElement,o=this.dom,r=this,a=this._hasChilds();if((n==o.drag||n==o.menu)&&("mouseover"==i?this.editor.highlighter.highlight(this):"mouseout"==i&&this.editor.highlighter.unhighlight()),"mousedown"==i&&n==o.drag&&this._onDragStart(e),"click"==i&&n==o.menu){var l=r.editor.highlighter;l.highlight(r),l.lock(),s.addClassName(o.menu,"selected"),this.showContextMenu(o.menu,function(){s.removeClassName(o.menu,"selected"),l.unlock(),l.unhighlight()})}if("click"==i&&n==o.expand&&a){var c=e.ctrlKey;this._onExpand(c)}var h=o.value;if(n==h)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(h.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&s.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){r._getDomValue(!0),r._updateDomValue()},1)}var u=o.field;if(n==u)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(u.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}var d=o.tree;if(n==d.parentNode)switch(i){case"click":var g=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageXn[i]?t:e[i]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t);return i.substring(1,i.length-1)},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',i=s.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ")},n.prototype._escapeJSON=function(e){for(var t="",i=0,n=e.length;n>i;){var o=e.charAt(i);"\n"==o?t+="\\n":"\\"==o?(t+=o,i++,o=e.charAt(i),-1=='"\\/bfnrtu'.indexOf(o)&&(t+="\\"),t+=o):t+='"'==o?'\\"':o,i++}return t};var a=r(n);e.exports=n},function(e,t,i){function n(e,t,i){function n(t){e.setMode(t);var i=e.dom&&e.dom.modeBox;i&&i.focus()}for(var r={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;a',a.appendChild(u),o.submenuTitle&&(u.title=o.submenuTitle),h=u}else{var d=document.createElement("div");d.className="expand",l.appendChild(d),h=l}h.onclick=function(){n._onExpandItem(s),h.focus()};var g=[];s.subItems=g;var f=document.createElement("ul");s.ul=f,f.className="menu",f.style.height="0",a.appendChild(f),i(f,g,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var n=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.visibleSubmenu=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu",o.menu=r;var s=document.createElement("ul");s.className="menu",r.appendChild(s),o.list=s,o.items=[];var a=document.createElement("button");o.focusButton=a;var l=document.createElement("li");l.style.overflow="hidden",l.style.height="0",l.appendChild(a),s.appendChild(l),i(s,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var o=i(3);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e){this.hide();var t=window.innerHeight,i=window.pageYOffset||document.scrollTop||0,r=t+i,s=e.offsetHeight,a=this.maxHeight,l=o.getAbsoluteLeft(e),c=o.getAbsoluteTop(e);r>c+s+a?(this.dom.menu.style.left=l+"px",this.dom.menu.style.top=c+s+"px",this.dom.menu.style.bottom=""):(this.dom.menu.style.left=l+"px",this.dom.menu.style.top="",this.dom.menu.style.bottom=t-c+"px"),document.body.appendChild(this.dom.menu);var h=this,u=this.dom.list;this.eventListeners.mousedown=o.addEventListener(document,"mousedown",function(e){var t=e.target;t==u||h._isChildOf(t,u)||(h.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.mousewheel=o.addEventListener(document,"mousewheel",function(e){e.stopPropagation(),e.preventDefault()}),this.eventListeners.keydown=o.addEventListener(document,"keydown",function(e){h._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){h.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.menu.parentNode&&(this.dom.menu.parentNode.removeChild(this.dom.menu),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(document,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",o.removeClassName(n.ul.parentNode,"selected"))},300),this.expandedItem=void 0),!i){var r=e.ul;r.style.display="block";{r.clientHeight}setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),i=t.indexOf(s),0==i&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),i=t.indexOf(s),i==t.length-1&&(t[0].focus(),l=!0)):37==a?("expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),r=t[i+1],r&&"expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),r=t[i+1],r&&"expand"==r.className&&(r=t[i+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.className="contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"type-string",title:o.string,click:function(){n._onAppend("","","string")}}]}],a=new r(s,{close:i});a.show(t)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,r=n.menu;if(i==r&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=this.editor.highlighter; +s.highlight(this.parent),s.lock(),o.addClassName(n.menu,"selected"),this.showContextMenu(n.menu,function(){o.removeClassName(n.menu,"selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=i(3),r=i(10);e.exports=n},function(e,t){var i=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,o,r){var s=r.length-1;switch(o){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g," ").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=r[s-1];case 13:this.$={};break;case 14:this.$=r[s-1];break;case 15:this.$=[r[s-2],r[s]];break;case 16:this.$={},this.$[r[s][0]]=r[s][1];break;case 17:this.$=r[s-2],r[s-2][r[s][0]]=r[s][1];break;case 18:this.$=[];break;case 19:this.$=r[s-1];break;case 20:this.$=[r[s]];break;case 21:this.$=r[s-2],r[s-2].push(r[s])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e){throw new Error(e)},parse:function(e){function t(e){o.length=o.length-2*e,r.length=r.length-e,s.length=s.length-e}function i(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,o=[0],r=[null],s=[],a=this.table,l="",c=0,h=0,u=0,d=2,g=1;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var f=this.lexer.yylloc;s.push(f),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var p,m,v,A,w,C,E,F,y,b={};;){if(v=o[o.length-1],this.defaultActions[v]?A=this.defaultActions[v]:(null==p&&(p=i()),A=a[v]&&a[v][p]),"undefined"==typeof A||!A.length||!A[0]){if(!u){y=[];for(C in a[v])this.terminals_[C]&&C>2&&y.push("'"+this.terminals_[C]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+y.join(", ")+", got '"+this.terminals_[p]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:f,expected:y})}if(3==u){if(p==g)throw new Error(x||"Parsing halted.");h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,p=i()}for(;;){if(d.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=o[o.length-1]}m=p,p=d,v=o[o.length-1],A=a[v]&&a[v][d],u=3}if(A[0]instanceof Array&&A.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+p);switch(A[0]){case 1:o.push(p),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),o.push(A[1]),p=null,m?(p=m,m=null):(h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,u>0&&u--);break;case 2:if(E=this.productions_[A[1]][1],b.$=r[r.length-E],b._$={first_line:s[s.length-(E||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(E||1)].first_column,last_column:s[s.length-1].last_column},w=this.performAction.call(b,l,h,c,this.yy,A[1],r,s),"undefined"!=typeof w)return w;E&&(o=o.slice(0,-1*E*2),r=r.slice(0,-1*E),s=s.slice(0,-1*E)),o.push(this.productions_[A[1]][0]),r.push(b.$),s.push(b._$),F=a[o[o.length-2]][o[o.length-1]],o.push(F);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=i,t.parse=i.parse},function(){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: #D5DDF6 } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid #D5DDF6 } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)})},function(e,t,i){!function(){function e(e){var t=function(e,t){return o("",e,t)},r=i;e&&(i[e]||(i[e]={}),r=i[e]),r.define&&r.define.packaged||(n.original=r.define,r.define=n,r.define.packaged=!0),r.acequire&&r.acequire.packaged||(o.original=r.acequire,r.acequire=t,r.acequire.packaged=!0)}var t="ace",i=function(){return this}();if(t||"undefined"==typeof acequirejs){var n=function(e,t,i){return"string"!=typeof e?void(n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace())):(2==arguments.length&&(i=t),n.modules||(n.modules={},n.payloads={}),n.payloads[e]=i,void(n.modules[e]=null))},o=function(e,t,i){if("[object Array]"===Object.prototype.toString.call(t)){for(var n=[],r=0,a=t.length;a>r;++r){var l=s(e,t[r]);if(!l&&o.original)return o.original.apply(window,arguments);n.push(l)}i&&i.apply(null,n)}else{if("string"==typeof t){var c=s(e,t);return!c&&o.original?o.original.apply(window,arguments):(i&&i(),c)}if(o.original)return o.original.apply(window,arguments)}},r=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return r(e,i[0])+"!"+r(e,i[1])}if("."==t.charAt(0)){var n=e.split("/").slice(0,-1).join("/");for(t=n+"/"+t;-1!==t.indexOf(".")&&o!=t;){var o=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},s=function(e,t){t=r(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var s={},a={id:t,uri:"",exports:s,packaged:!0},l=function(e,i){return o(t,e,i)},c=i(l,s,a);s=c||a.exports,n.modules[t]=s,delete n.payloads[t]}i=n.modules[t]=s||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(){"use strict";function e(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function t(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&t(l,"")>-1&&(a=RegExp(this.source,i.replace.call(e(this),"g","")),i.replace.call(r.slice(l.index),a,function(){for(var e=1;el.index&&this.lastIndex--}return l},o||(RegExp.prototype.test=function(e){var t=i.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function e(){}function t(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function i(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(t){var i=this;if("function"!=typeof i)throw new TypeError("Function.prototype.bind called on incompatible "+i);var n=u.call(arguments,1),o=function(){if(this instanceof o){var e=i.apply(this,n.concat(u.call(arguments)));return Object(e)===e?e:this}return i.apply(t,n.concat(u.call(arguments)))};return i.prototype&&(e.prototype=i.prototype,o.prototype=new e,e.prototype=null),o});var n,o,r,s,a,l=Function.prototype.call,c=Array.prototype,h=Object.prototype,u=c.slice,d=l.bind(h.toString),g=l.bind(h.hasOwnProperty);if((a=g(h,"__defineGetter__"))&&(n=l.bind(h.__defineGetter__),o=l.bind(h.__defineSetter__),r=l.bind(h.__lookupGetter__),s=l.bind(h.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];return i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),t+1==i.length,t+1==i.length?!0:void 0}()){var f=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?f.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(u.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:0>e&&(e=Math.max(i+e,0)),i>e+t||(t=i-e);var n=this.slice(e,e+t),o=u.call(arguments,2),r=o.length;if(e===i)r&&this.push.apply(this,o);else{var s=Math.min(t,i-e),a=e+s,l=a+r-s,c=i-a,h=i-s;if(a>l)for(var d=0;c>d;++d)this[l+d]=this[a+d];else if(l>a)for(d=c;d--;)this[l+d]=this[a+d];if(r&&e===h)this.length=h,this.push.apply(this,o);else for(this.length=h+r,d=0;r>d;++d)this[e+d]=o[d]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==d(e)});var p=Object("a"),m="a"!=p[0]||!(0 in p);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=arguments[1],o=-1,r=i.length>>>0;if("[object Function]"!=d(e))throw new TypeError;for(;++o>>0,o=Array(n),r=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var s=0;n>s;s++)s in i&&(o[s]=e.call(r,i[s],s,t));return o}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,i=R(this),n=m&&"[object String]"==d(this)?this.split(""):i,o=n.length>>>0,r=[],s=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var a=0;o>a;a++)a in n&&(t=n[a],e.call(s,t,a,i)&&r.push(t));return r}),Array.prototype.every||(Array.prototype.every=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var r=0;n>r;r++)if(r in i&&!e.call(o,i[r],r,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var r=0;n>r;r++)if(r in i&&e.call(o,i[r],r,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var o,r=0;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in i){o=i[r++];break}if(++r>=n)throw new TypeError("reduce of empty array with no initial value")}for(;n>r;r++)r in i&&(o=e.call(void 0,o,i[r],r,t));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var o,r=n-1;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in i){o=i[r--];break}if(--r<0)throw new TypeError("reduceRight of empty array with no initial value")}do r in this&&(o=e.call(void 0,o,i[r],r,t));while(r--);return o}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=m&&"[object String]"==d(this)?this.split(""):R(this),n=t.length>>>0;if(!n)return-1;var o=0;for(arguments.length>1&&(o=i(arguments[1])),o=o>=0?o:Math.max(0,n+o);n>o;o++)if(o in t&&t[o]===e)return o;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=m&&"[object String]"==d(this)?this.split(""):R(this),n=t.length>>>0;if(!n)return-1;var o=n-1;for(arguments.length>1&&(o=Math.min(o,i(arguments[1]))),o=o>=0?o:n-Math.abs(o);o>=0;o--)if(o in t&&e===t[o])return o;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:h)}),!Object.getOwnPropertyDescriptor){var v="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(v+e);if(g(e,t)){var i,n,o;if(i={enumerable:!0,configurable:!0},a){var l=e.__proto__;e.__proto__=h;var n=r(e,t),o=s(e,t);if(e.__proto__=l,n||o)return n&&(i.get=n),o&&(i.set=o),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var A;A=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=A();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var w=t({}),C="undefined"==typeof document||t(document.createElement("div"));if(!w||!C)var E=Object.defineProperty}if(!Object.defineProperty||E){var F="Property description must be an object: ",y="Object.defineProperty called on non-object: ",b="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(y+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(F+i);if(E)try{return E.call(Object,e,t,i)}catch(l){}if(g(i,"value"))if(a&&(r(e,t)||s(e,t))){var c=e.__proto__;e.__proto__=h,delete e[t],e[t]=i.value,e.__proto__=c}else e[t]=i.value;else{if(!a)throw new TypeError(b);g(i,"get")&&n(e,t,i.get),g(i,"set")&&o(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(x){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var S=!0,$=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],B=$.length;for(var D in{toString:null})S=!1;Object.keys=function T(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var T=[];for(var t in e)g(e,t)&&T.push(t);if(S)for(var i=0,n=B;n>i;i++){var o=$[i];g(e,o)&&T.push(o)}return T}}Date.now||(Date.now=function(){return(new Date).getTime()});var k=" \n \f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||k.trim()){k="["+k+"]";var L=new RegExp("^"+k+k+"*"),_=new RegExp(k+k+"*$");String.prototype.trim=function(){return String(this).replace(L,"").replace(_,"")}}var R=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t){"use strict";if("undefined"!=typeof document){var i="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||i,e):document.createElement(e)},t.hasCssClass=function(e,t){var i=(e.className||"").split(/\s+/g);return-1!==i.indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var o=i.indexOf(t);if(-1==o)break;n=!1,i.splice(o,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){for(;n=0?(n.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]:(n.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((n.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(n.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(n.split(" Chrome/")[1])||void 0,t.isAIR=n.indexOf("AdobeAIR")>=0,t.isIPad=n.indexOf("iPad")>=0,t.isTouchPad=n.indexOf("TouchPad")>=0,t.isChromeOS=n.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t){"use strict";function i(e,t,i){var l=r(t);if(!o.isMac&&s){if((s[91]||s[92])&&(l|=8),s.altGr){if(3==(3&l))return;s.altGr=0}if(18===i||17===i){var c="location"in t?t.location:t.keyLocation;if(17===i&&1===c)a=t.timeStamp;else if(18===i&&3===l&&2===c){var h=-a;a=t.timeStamp,h+=a,3>h&&(s.altGr=!0)}}}if(i in n.MODIFIER_KEYS){switch(n.MODIFIER_KEYS[i]){case"Alt":l=2;break;case"Shift":l=4;break;case"Ctrl":l=1;break;default:l=8}i=-1}if(8&l&&(91===i||93===i)&&(i=-1),!l&&13===i){var c="location"in t?t.location:t.keyLocation;if(3===c&&(e(t,l,-i),t.defaultPrevented))return}if(o.isChromeOS&&8&l){if(e(t,l,i),t.defaultPrevented)return;l&=-9}return l||i in n.FUNCTION_KEYS||i in n.PRINTABLE_KEYS?e(t,l,i):!1}var n=e("./keys"),o=e("./useragent");t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){return e.removeEventListener?e.removeEventListener(t,i,!1):void(e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i))},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||o.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function o(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",o,!0),t.removeListener(document,"dragstart",o,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",o,!0),t.addListener(document,"dragstart",o,!0),o},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0); -if(e===i)r&&this.push.apply(this,o);else{var s=Math.min(t,i-e),a=e+s,l=a+r-s,c=i-a,h=i-s;if(a>l)for(var d=0;c>d;++d)this[l+d]=this[a+d];else if(l>a)for(d=c;d--;)this[l+d]=this[a+d];if(r&&e===h)this.length=h,this.push.apply(this,o);else for(this.length=h+r,d=0;r>d;++d)this[e+d]=o[d]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==d(e)});var p=Object("a"),m="a"!=p[0]||!(0 in p);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=arguments[1],o=-1,r=i.length>>>0;if("[object Function]"!=d(e))throw new TypeError;for(;++o>>0,o=Array(n),r=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var s=0;n>s;s++)s in i&&(o[s]=e.call(r,i[s],s,t));return o}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,i=R(this),n=m&&"[object String]"==d(this)?this.split(""):i,o=n.length>>>0,r=[],s=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var a=0;o>a;a++)a in n&&(t=n[a],e.call(s,t,a,i)&&r.push(t));return r}),Array.prototype.every||(Array.prototype.every=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var r=0;n>r;r++)if(r in i&&!e.call(o,i[r],r,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var r=0;n>r;r++)if(r in i&&e.call(o,i[r],r,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var o,r=0;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in i){o=i[r++];break}if(++r>=n)throw new TypeError("reduce of empty array with no initial value")}for(;n>r;r++)r in i&&(o=e.call(void 0,o,i[r],r,t));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=R(this),i=m&&"[object String]"==d(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var o,r=n-1;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in i){o=i[r--];break}if(--r<0)throw new TypeError("reduceRight of empty array with no initial value")}do r in this&&(o=e.call(void 0,o,i[r],r,t));while(r--);return o}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=m&&"[object String]"==d(this)?this.split(""):R(this),n=t.length>>>0;if(!n)return-1;var o=0;for(arguments.length>1&&(o=i(arguments[1])),o=o>=0?o:Math.max(0,n+o);n>o;o++)if(o in t&&t[o]===e)return o;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=m&&"[object String]"==d(this)?this.split(""):R(this),n=t.length>>>0;if(!n)return-1;var o=n-1;for(arguments.length>1&&(o=Math.min(o,i(arguments[1]))),o=o>=0?o:n-Math.abs(o);o>=0;o--)if(o in t&&e===t[o])return o;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:h)}),!Object.getOwnPropertyDescriptor){var v="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(v+e);if(g(e,t)){var i,n,o;if(i={enumerable:!0,configurable:!0},a){var l=e.__proto__;e.__proto__=h;var n=r(e,t),o=s(e,t);if(e.__proto__=l,n||o)return n&&(i.get=n),o&&(i.set=o),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var A;A=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=A();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var w=t({}),C="undefined"==typeof document||t(document.createElement("div"));if(!w||!C)var E=Object.defineProperty}if(!Object.defineProperty||E){var F="Property description must be an object: ",y="Object.defineProperty called on non-object: ",b="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(y+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(F+i);if(E)try{return E.call(Object,e,t,i)}catch(l){}if(g(i,"value"))if(a&&(r(e,t)||s(e,t))){var c=e.__proto__;e.__proto__=h,delete e[t],e[t]=i.value,e.__proto__=c}else e[t]=i.value;else{if(!a)throw new TypeError(b);g(i,"get")&&n(e,t,i.get),g(i,"set")&&o(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(x){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var S=!0,$=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],B=$.length;for(var D in{toString:null})S=!1;Object.keys=function T(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var T=[];for(var t in e)g(e,t)&&T.push(t);if(S)for(var i=0,n=B;n>i;i++){var o=$[i];g(e,o)&&T.push(o)}return T}}Date.now||(Date.now=function(){return(new Date).getTime()});var k=" \n \f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||k.trim()){k="["+k+"]";var L=new RegExp("^"+k+k+"*"),_=new RegExp(k+k+"*$");String.prototype.trim=function(){return String(this).replace(L,"").replace(_,"")}}var R=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t){"use strict";if("undefined"!=typeof document){var i="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||i,e):document.createElement(e)},t.hasCssClass=function(e,t){var i=(e.className||"").split(/\s+/g);return-1!==i.indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var o=i.indexOf(t);if(-1==o)break;n=!1,i.splice(o,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){for(;n=0?(n.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]:(n.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((n.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(n.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(n.split(" Chrome/")[1])||void 0,t.isAIR=n.indexOf("AdobeAIR")>=0,t.isIPad=n.indexOf("iPad")>=0,t.isTouchPad=n.indexOf("TouchPad")>=0,t.isChromeOS=n.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t){"use strict";function i(e,t,i){var l=r(t);if(!o.isMac&&s){if((s[91]||s[92])&&(l|=8),s.altGr){if(3==(3&l))return;s.altGr=0}if(18===i||17===i){var c="location"in t?t.location:t.keyLocation;if(17===i&&1===c)a=t.timeStamp;else if(18===i&&3===l&&2===c){var h=-a;a=t.timeStamp,h+=a,3>h&&(s.altGr=!0)}}}if(i in n.MODIFIER_KEYS){switch(n.MODIFIER_KEYS[i]){case"Alt":l=2;break;case"Shift":l=4;break;case"Ctrl":l=1;break;default:l=8}i=-1}if(8&l&&(91===i||93===i)&&(i=-1),!l&&13===i){var c="location"in t?t.location:t.keyLocation;if(3===c&&(e(t,l,-i),t.defaultPrevented))return}if(o.isChromeOS&&8&l){if(e(t,l,i),t.defaultPrevented)return;l&=-9}return l||i in n.FUNCTION_KEYS||i in n.PRINTABLE_KEYS?e(t,l,i):!1}var n=e("./keys"),o=e("./useragent");t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){return e.removeEventListener?e.removeEventListener(t,i,!1):void(e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i))},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||o.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function o(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",o,!0),t.removeListener(document,"dragstart",o,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",o,!0),t.addListener(document,"dragstart",o,!0),o},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){var s,a,l,c=0,h={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){if(0!==t.getButton(e)?c=0:e.detail>1?(c++,c>4&&(c=1)):c=1,o.isIE){var u=Math.abs(e.clientX-s)>5||Math.abs(e.clientY-a)>5;(!l||u)&&(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(s=e.clientX,a=e.clientY)}if(e._clicks=c,n[r]("mousedown",e),c>4)c=0;else if(c>1)return n[r](h[c],e)}),o.isOldIE&&t.addListener(e,"dblclick",function(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[r]("mousedown",e),n[r](h[c],e)})};var r=!o.isMac||!o.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return n.KEY_MODS[r(e)]};var s=null,a=0;if(t.addCommandKeyListener=function(e,n){var r=t.addListener;if(o.isOldGecko||o.isOpera&&!("KeyboardEvent"in window)){var a=null;r(e,"keydown",function(e){a=e.keyCode}),r(e,"keypress",function(e){return i(n,e,a)})}else{var l=null;r(e,"keydown",function(e){s[e.keyCode]=!0;var t=i(n,e,e.keyCode);return l=e.defaultPrevented,t}),r(e,"keypress",function(e){l&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),l=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(s=Object.create(null),r(window,"focus",function(){s=Object.create(null)}))}},window.postMessage&&!o.isOldIE){var l=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+l;t.addListener(i,"message",function o(r){r.data==n&&(t.stopPropagation(r),t.removeListener(i,"message",o),e())}),i.postMessage(n,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame=t.nextFrame?t.nextFrame.bind(window):function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var i=/^\s\s*/,n=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(n,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;n>i;i++)t[i]=e[i]&&"object"==typeof e[i]?this.copyObject(e[i]):e[i];return t},t.deepCopy=function(e){if("object"!=typeof e||!e)return e;var i=e.constructor;if(i===RegExp)return e;var n=i();for(var o in e)n[o]="object"==typeof e[o]?t.deepCopy(e[o]):e[o];return n},t.arrayToMap=function(e){for(var t={},i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=(e("../lib/dom"),e("../lib/event"),e("../lib/useragent"),0);(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,o=e.getButton();if(0!==o){var r=n.getSelectionRange(),s=r.isEmpty();return s&&n.selection.moveToPosition(i),void n.textInput.onContextMenu(e.domEvent)}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&0>=a)t=this.$clickSelection.end,(r.end.row!=n.row||r.end.column!=n.column)&&(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,(r.start.row!=n.row||r.start.column!=n.column)&&(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=n(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>r||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,o=n.getBracketRange(t);o?(o.isEmpty()&&(o.start.column--,o.end.column++),this.setState("select")):(o=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=o,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(){var e=this.editor;e.selectAll(),this.$clickSelection=e.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,o=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return o||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}}).call(i.prototype),t.DefaultHandlers=i}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t){"use strict";function i(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var n=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=n.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){n.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px", -this.getElement().style.top=t+"px"},this.setClassName=function(e){n.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(i.prototype),t.Tooltip=i}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t){"use strict";function i(e){function t(){var t=u.getDocumentPosition().row,n=l.$annotations[t];if(!n)return i();var o=a.session.getLength();if(t==o){var s=a.renderer.pixelToScreenCoordinates(0,u.y).row,h=u.$pos;if(s>a.session.documentToScreenRow(h.row,h.column))return i()}if(d!=n)if(d=n.text.join("
"),c.setHtml(d),c.show(),a.on("mousewheel",i),e.$tooltipFollowsMouse)r(u);else{var g=l.$cells[a.session.documentToScreenRow(t,0)].element,f=g.getBoundingClientRect(),p=c.getElement().style;p.left=f.right+"px",p.top=f.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),d&&(c.hide(),d=null,a.removeEventListener("mousewheel",i))}function r(e){c.setPosition(e.x,e.y)}var a=e.editor,l=a.renderer.$gutterLayer,c=new n(a.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(a.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,o=a.session.selection;if(t.getShiftKey())o.selectTo(n,0);else{if(2==t.domEvent.detail)return a.selectAll(),t.preventDefault();e.$clickSelection=a.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,u,d;e.editor.setDefaultHandler("guttermousemove",function(n){var s=n.domEvent.target||n.domEvent.srcElement;return o.hasCssClass(s,"ace_fold-widget")?i():(d&&e.$tooltipFollowsMouse&&r(n),u=n,void(h||(h=setTimeout(function(){h=null,u&&!e.isMousePressed?t():i()},50))))}),s.addListener(a.renderer.$gutter,"mouseout",function(){u=null,d&&!h&&(h=setTimeout(function(){h=null,i()},50))}),a.on("changeSession",i)}function n(e){a.call(this,e)}var o=e("../lib/dom"),r=e("../lib/oop"),s=e("../lib/event"),a=e("../tooltip").Tooltip;r.inherits(n,a),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,o=this.getWidth(),r=this.getHeight();e+=15,t+=15,e+o>i&&(e-=e+o-i),t+r>n&&(t-=20+r),a.prototype.setPosition.call(this,e,t)}}.call(n.prototype),t.GutterHandler=i}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t){"use strict";var i=e("../lib/event"),n=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=n.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t){"use strict";function i(e){function t(e,t){var i=Date.now(),o=!t||e.row!=t.row,r=!t||e.column!=t.column;if(!B||o||r)m.$blockScrolling+=1,m.moveCursorToPosition(e),m.$blockScrolling-=1,B=i,D={x:C,y:E};else{var s=n(D.x,D.y,C,E);s>c?B=null:i-B>=l&&(m.renderer.scrollCursorIntoView(),B=null)}}function i(e,t){var i=Date.now(),n=m.renderer.layerConfig.lineHeight,o=m.renderer.layerConfig.characterWidth,r=m.renderer.scroller.getBoundingClientRect(),s={x:{left:C-r.left,right:r.right-C},y:{top:E-r.top,bottom:r.bottom-E}},l=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};2>=l/o&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=a&&m.renderer.scrollCursorIntoView(h):$=i:$=null}function h(){var e=b;b=m.renderer.screenToTextCoordinates(C,E),t(b,e),i(b,e)}function u(){y=m.selection.toOrientedRange(),w=m.session.addMarker(y,"ace_selection",m.getSelectionStyle()),m.clearSelection(),m.isFocused()&&m.renderer.$cursorLayer.setBlinking(!1),clearInterval(F),h(),F=setInterval(h,20),L=0,r.addListener(document,"mousemove",g)}function d(){clearInterval(F),m.session.removeMarker(w),w=null,m.$blockScrolling+=1,m.selection.fromOrientedRange(y),m.$blockScrolling-=1,m.isFocused()&&!S&&m.renderer.$cursorLayer.setBlinking(!m.getReadOnly()),y=null,b=null,L=0,$=null,B=null,r.removeListener(document,"mousemove",g)}function g(){null==_&&(_=setTimeout(function(){null!=_&&w&&d()},20))}function f(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function p(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=s.isMac?e.altKey:e.ctrlKey,o="uninitialized";try{o=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var r="none";return n&&t.indexOf(o)>=0?r="copy":i.indexOf(o)>=0?r="move":t.indexOf(o)>=0&&(r="copy"),r}var m=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var A=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];A.forEach(function(t){e[t]=this[t]},this),m.addEventListener("mousedown",this.onMouseDown.bind(e));var w,C,E,F,y,b,x,S,$,B,D,k=m.container,L=0;this.onDragStart=function(e){if(this.cancelDrag||!k.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}y=m.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=m.getReadOnly()?"copy":"copyMove",s.isOpera&&(m.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),s.isOpera&&m.container.removeChild(v),i.clearData(),i.setData("Text",m.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(k.draggable=!1,S=!1,this.setState(null),!m.getReadOnly()){var t=e.dataTransfer.dropEffect;x||"move"!=t||m.session.remove(m.getSelectionRange()),m.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){return!m.getReadOnly()&&f(e.dataTransfer)?(C=e.clientX,E=e.clientY,w||u(),L++,e.dataTransfer.dropEffect=x=p(e),r.preventDefault(e)):void 0},this.onDragOver=function(e){return!m.getReadOnly()&&f(e.dataTransfer)?(C=e.clientX,E=e.clientY,w||(u(),L++),null!==_&&(_=null),e.dataTransfer.dropEffect=x=p(e),r.preventDefault(e)):void 0},this.onDragLeave=function(e){return L--,0>=L&&w?(d(),x=null,r.preventDefault(e)):void 0},this.onDrop=function(e){if(b){var t=e.dataTransfer;if(S)switch(x){case"move":y=y.contains(b.row,b.column)?{start:b,end:b}:m.moveText(y,b);break;case"copy":y=m.moveText(y,b,!0)}else{var i=t.getData("Text");y={start:b,end:m.session.insert(b,i)},m.focus(),x=null}return d(),r.preventDefault(e)}},r.addListener(k,"dragstart",this.onDragStart.bind(e)),r.addListener(k,"dragend",this.onDragEnd.bind(e)),r.addListener(k,"dragenter",this.onDragEnter.bind(e)),r.addListener(k,"dragover",this.onDragOver.bind(e)),r.addListener(k,"dragleave",this.onDragLeave.bind(e)),r.addListener(k,"drop",this.onDrop.bind(e));var _=null}function n(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),r=e("../lib/event"),s=e("../lib/useragent"),a=200,l=200,c=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var i=s.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(){var e=this.editor.container;if(s.isIE&&"dragReady"==this.state){var t=n(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);t>3&&e.dragDrop()}if("dragWait"===this.state){var t=n(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);t>0&&(e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton(),o=e.domEvent.detail||1;if(1===o&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in r&&(r.unselectable="on"),t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var a=t.container;a.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(i.prototype),t.DragdropHandler=i}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t){"use strict";var i=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),o=document.createElement("script");o.src=e,n.appendChild(o),o.onload=o.onreadystatechange=function(e,i){(i||!o.readyState||"loaded"==o.readyState||"complete"==o.readyState)&&(o=o.onload=o.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t){"use strict";var i={},n=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(i.length||r){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=n),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;sv;v++){var w=m[v];0===w.name.indexOf("data-ace-")&&(s[r(w.name.replace(/^data-ace-/,""))]=w.value)}var C=p.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);C&&(a=C[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var E in s)"undefined"!=typeof s[E]&&t.set(E,s[E])}function r(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e("./lib/lang"),a=e("./lib/oop"),l=e("./lib/net"),c=e("./lib/event_emitter").EventEmitter,h=function(){return this}(),u={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!u.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return u[e]},t.set=function(e,t){if(!u.hasOwnProperty(e))throw new Error("Unknown config key: "+e);u[e]=t},t.all=function(){return s.copyObject(u)},a.implement(t,c),t.moduleUrl=function(e,t){if(u.$moduleUrls[e])return u.$moduleUrls[e];var i=e.split("/");t=t||i[i.length-2]||"";var n="snippets"==t?"/":"-",o=i[i.length-1];if("worker"==t&&"-"==n){var r=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");o=o.replace(r,"")}(!o||o==t)&&i.length>1&&(o=i[i.length-2]);var s=u[t+"Path"];return null==s?s=u.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+o+this.get("suffix")},t.setModuleUrl=function(e,t){return u.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var o,r;Array.isArray(i)&&(r=i[0],i=i[1]);try{o=e(i)}catch(s){}if(o&&!t.$loading[i])return n&&n(o);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var a=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};return t.get("packaged")?void l.loadScript(t.moduleUrl(i,r),a):a()}},o(!0),t.init=o;var d={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]!==t){var i=this.$options[e];if(!i)return void("undefined"!=typeof console&&console.warn&&console.warn('misspelled option "'+e+'"'));if(i.forwardTo)return this[i.forwardTo]&&this[i.forwardTo].setOption(e,t);i.handlesSet||(this["$"+e]=t),i&&i.set&&i.set.call(this,t)}},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:void("undefined"!=typeof console&&console.warn&&console.warn('misspelled option "'+e+'"'))}},g={};t.defineOptions=function(e,t,i){return e.$options||(g[t]=e.$options={}),Object.keys(i).forEach(function(t){var n=i[t];"string"==typeof n&&(n={forwardTo:n}),n.name||(n.name=t),e.$options[n.name]=n,"initialValue"in n&&(e["$"+n.name]=n.initialValue)}),a.implement(e,d),this},t.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var i=e.$options[t];"value"in i&&e.setOption(t,i.value)})},t.setDefaultValue=function(e,i,n){var o=g[e]||(g[e]={});o[i]&&(o.forwardTo?t.setDefaultValue(o.forwardTo,i,n):o[i].value=n)},t.setDefaultValues=function(e,i){Object.keys(i).forEach(function(n){t.setDefaultValue(e,n,i[n])})}}),ace.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/config"],function(e,t){"use strict";var i=e("../lib/event"),n=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,r=e("./default_gutter_handler").GutterHandler,s=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,l=e("../config"),c=function(e){var t=this;this.editor=e,new o(this),new r(this),new a(this);var s=function(t){!e.isFocused()&&e.textInput&&e.textInput.moveToMouse(t),e.focus()},l=e.renderer.getMouseEventTarget();i.addListener(l,"click",this.onMouseEvent.bind(this,"click")),i.addListener(l,"mousemove",this.onMouseMove.bind(this,"mousemove")),i.addMultiMouseDownListener(l,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(i.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),i.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),n.isIE&&(i.addListener(e.renderer.scrollBarV.element,"mousedown",s),i.addListener(e.renderer.scrollBarH.element,"mousemove",s))),i.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var c=e.renderer.$gutter;i.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),i.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),i.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),i.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),i.addListener(l,"mousedown",s),i.addListener(c,"mousedown",function(t){return e.focus(),i.preventDefault(t)}),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),o=e.session.selection.getRange(),r=e.renderer;r.setCursorStyle(!o.isEmpty()&&o.insideStart(n.row,n.column)?"default":"")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new s(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new s(t,this.editor))},this.onMouseWheel=function(e,t){var i=new s(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var o=this.editor.renderer;o.$keepTextAreaAtCursor&&(o.$keepTextAreaAtCursor=null);var r=this,a=function(e){if(e){if(n.isWebKit&&!e.which&&r.releaseMouse)return r.releaseMouse();r.x=e.clientX,r.y=e.clientY,t&&t(e),r.mouseEvent=new s(e,r.editor),r.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),r[r.state+"End"]&&r[r.state+"End"](e),r.state="",null==o.$keepTextAreaAtCursor&&(o.$keepTextAreaAtCursor=!0,o.$moveTextAreaToCursor()),r.isMousePressed=!1,r.$onCaptureMouseMove=r.releaseMouse=null,e&&r.onMouseEvent("mouseup",e)},c=function(){r[r.state]&&r[r.state](),r.$mouseMoved=!1};if(n.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});r.$onCaptureMouseMove=a,r.releaseMouse=i.capture(this.editor.container,a,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&i.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(c.prototype),l.defineOptions(c.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:n.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=c}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t){"use strict";function i(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,o=n.getFoldAt(i.row,i.column,1);o&&(t.getAccelKey()?n.removeFold(o):n.expandFold(o),t.stop())}),e.on("gutterclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,o=e.session;o.foldWidgets&&o.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,o=e.session,r=o.getParentFoldRangeData(n,!0),s=r.range||r.firstRange;if(s){n=s.start.row;var a=o.getFoldAt(n,o.getLine(n).length,1);a?o.removeFold(a):(o.addFold("...",s),e.renderer.scrollCursorIntoView({row:s.start.row,column:0}))}t.stop()}})}t.FoldHandler=i}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t){"use strict";var i=e("../lib/keys"),n=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1==t?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,o){for(var r,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(r=this.$handlers[l].handleKeyboard(this.$data,e,t,i,o),!(r&&r.command&&(s="null"==r.command?!0:a.exec(r.command,this.$editor,r.args,o),s&&o&&-1!=e&&1!=r.passEvent&&1!=r.command.passEvent&&n.stopEvent(o),s))););return s},this.onCommandKey=function(e,t,n){var o=i.keyCodeToString(n);this.$callKeyboardHandlers(t,o,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t){"use strict";var i=function(e,t){return e.row-t.row||e.column-t.column},n=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return 0==this.compare(e,t)?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var o={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?r.fromPoints(t,t):this.isBackwards()?r.fromPoints(t,e):r.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if("undefined"==typeof t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,o=this.session.getFoldLine(n);return o?(n=o.start.row,i=o.end.row):i=n,t===!0?new r(n,0,i,this.session.getLine(i).length):new r(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row1?(c++,c>4&&(c=1)):c=1,o.isIE){var u=Math.abs(e.clientX-s)>5||Math.abs(e.clientY-a)>5;(!l||u)&&(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(s=e.clientX,a=e.clientY)}if(e._clicks=c,n[r]("mousedown",e),c>4)c=0;else if(c>1)return n[r](h[c],e)}),o.isOldIE&&t.addListener(e,"dblclick",function(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[r]("mousedown",e),n[r](h[c],e)})};var r=!o.isMac||!o.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return n.KEY_MODS[r(e)]};var s=null,a=0;if(t.addCommandKeyListener=function(e,n){var r=t.addListener;if(o.isOldGecko||o.isOpera&&!("KeyboardEvent"in window)){var a=null;r(e,"keydown",function(e){a=e.keyCode}),r(e,"keypress",function(e){return i(n,e,a)})}else{var l=null;r(e,"keydown",function(e){s[e.keyCode]=!0;var t=i(n,e,e.keyCode);return l=e.defaultPrevented,t}),r(e,"keypress",function(e){l&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),l=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(s=Object.create(null),r(window,"focus",function(){s=Object.create(null)}))}},window.postMessage&&!o.isOldIE){var l=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+l;t.addListener(i,"message",function o(r){r.data==n&&(t.stopPropagation(r),t.removeListener(i,"message",o),e())}),i.postMessage(n,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame=t.nextFrame?t.nextFrame.bind(window):function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var i=/^\s\s*/,n=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(n,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;n>i;i++)t[i]=e[i]&&"object"==typeof e[i]?this.copyObject(e[i]):e[i];return t},t.deepCopy=function(e){if("object"!=typeof e||!e)return e;var i=e.constructor;if(i===RegExp)return e;var n=i();for(var o in e)n[o]="object"==typeof e[o]?t.deepCopy(e[o]):e[o];return n},t.arrayToMap=function(e){for(var t={},i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=(e("../lib/dom"),e("../lib/event"),e("../lib/useragent"),0);(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,o=e.getButton();if(0!==o){var r=n.getSelectionRange(),s=r.isEmpty();return s&&n.selection.moveToPosition(i),void n.textInput.onContextMenu(e.domEvent)}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&0>=a)t=this.$clickSelection.end,(r.end.row!=n.row||r.end.column!=n.column)&&(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,(r.start.row!=n.row||r.start.column!=n.column)&&(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=n(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>r||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,o=n.getBracketRange(t);o?(o.isEmpty()&&(o.start.column--,o.end.column++),this.setState("select")):(o=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=o,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(){var e=this.editor;e.selectAll(),this.$clickSelection=e.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,o=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return o||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}}).call(i.prototype),t.DefaultHandlers=i}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t){"use strict";function i(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var n=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=n.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){n.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){n.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(i.prototype),t.Tooltip=i}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t){"use strict";function i(e){function t(){var t=u.getDocumentPosition().row,n=l.$annotations[t];if(!n)return i();var o=a.session.getLength();if(t==o){var s=a.renderer.pixelToScreenCoordinates(0,u.y).row,h=u.$pos;if(s>a.session.documentToScreenRow(h.row,h.column))return i()}if(d!=n)if(d=n.text.join("
"),c.setHtml(d),c.show(),a.on("mousewheel",i),e.$tooltipFollowsMouse)r(u);else{var g=l.$cells[a.session.documentToScreenRow(t,0)].element,f=g.getBoundingClientRect(),p=c.getElement().style;p.left=f.right+"px",p.top=f.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),d&&(c.hide(),d=null,a.removeEventListener("mousewheel",i))}function r(e){c.setPosition(e.x,e.y)}var a=e.editor,l=a.renderer.$gutterLayer,c=new n(a.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(a.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,o=a.session.selection;if(t.getShiftKey())o.selectTo(n,0);else{if(2==t.domEvent.detail)return a.selectAll(),t.preventDefault();e.$clickSelection=a.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,u,d;e.editor.setDefaultHandler("guttermousemove",function(n){var s=n.domEvent.target||n.domEvent.srcElement;return o.hasCssClass(s,"ace_fold-widget")?i():(d&&e.$tooltipFollowsMouse&&r(n),u=n,void(h||(h=setTimeout(function(){h=null,u&&!e.isMousePressed?t():i()},50))))}),s.addListener(a.renderer.$gutter,"mouseout",function(){u=null,d&&!h&&(h=setTimeout(function(){h=null,i()},50))}),a.on("changeSession",i)}function n(e){a.call(this,e)}var o=e("../lib/dom"),r=e("../lib/oop"),s=e("../lib/event"),a=e("../tooltip").Tooltip;r.inherits(n,a),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,o=this.getWidth(),r=this.getHeight();e+=15,t+=15,e+o>i&&(e-=e+o-i),t+r>n&&(t-=20+r),a.prototype.setPosition.call(this,e,t)}}.call(n.prototype),t.GutterHandler=i}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t){"use strict";var i=e("../lib/event"),n=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=n.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t){"use strict";function i(e){function t(e,t){var i=Date.now(),o=!t||e.row!=t.row,r=!t||e.column!=t.column;if(!B||o||r)m.$blockScrolling+=1,m.moveCursorToPosition(e),m.$blockScrolling-=1,B=i,D={x:C,y:E};else{var s=n(D.x,D.y,C,E);s>c?B=null:i-B>=l&&(m.renderer.scrollCursorIntoView(),B=null)}}function i(e,t){var i=Date.now(),n=m.renderer.layerConfig.lineHeight,o=m.renderer.layerConfig.characterWidth,r=m.renderer.scroller.getBoundingClientRect(),s={x:{left:C-r.left,right:r.right-C},y:{top:E-r.top,bottom:r.bottom-E}},l=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};2>=l/o&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=a&&m.renderer.scrollCursorIntoView(h):$=i:$=null}function h(){var e=b;b=m.renderer.screenToTextCoordinates(C,E),t(b,e),i(b,e)}function u(){y=m.selection.toOrientedRange(),w=m.session.addMarker(y,"ace_selection",m.getSelectionStyle()),m.clearSelection(),m.isFocused()&&m.renderer.$cursorLayer.setBlinking(!1),clearInterval(F),h(),F=setInterval(h,20),L=0,r.addListener(document,"mousemove",g)}function d(){clearInterval(F),m.session.removeMarker(w),w=null,m.$blockScrolling+=1,m.selection.fromOrientedRange(y),m.$blockScrolling-=1,m.isFocused()&&!S&&m.renderer.$cursorLayer.setBlinking(!m.getReadOnly()),y=null,b=null,L=0,$=null,B=null,r.removeListener(document,"mousemove",g)}function g(){null==_&&(_=setTimeout(function(){null!=_&&w&&d()},20))}function f(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function p(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=s.isMac?e.altKey:e.ctrlKey,o="uninitialized";try{o=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var r="none";return n&&t.indexOf(o)>=0?r="copy":i.indexOf(o)>=0?r="move":t.indexOf(o)>=0&&(r="copy"),r}var m=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var A=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];A.forEach(function(t){e[t]=this[t]},this),m.addEventListener("mousedown",this.onMouseDown.bind(e));var w,C,E,F,y,b,x,S,$,B,D,k=m.container,L=0;this.onDragStart=function(e){if(this.cancelDrag||!k.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}y=m.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=m.getReadOnly()?"copy":"copyMove",s.isOpera&&(m.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),s.isOpera&&m.container.removeChild(v),i.clearData(),i.setData("Text",m.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(k.draggable=!1,S=!1,this.setState(null),!m.getReadOnly()){var t=e.dataTransfer.dropEffect;x||"move"!=t||m.session.remove(m.getSelectionRange()),m.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){return!m.getReadOnly()&&f(e.dataTransfer)?(C=e.clientX,E=e.clientY,w||u(),L++,e.dataTransfer.dropEffect=x=p(e),r.preventDefault(e)):void 0},this.onDragOver=function(e){return!m.getReadOnly()&&f(e.dataTransfer)?(C=e.clientX,E=e.clientY,w||(u(),L++),null!==_&&(_=null),e.dataTransfer.dropEffect=x=p(e),r.preventDefault(e)):void 0},this.onDragLeave=function(e){return L--,0>=L&&w?(d(),x=null,r.preventDefault(e)):void 0},this.onDrop=function(e){if(b){var t=e.dataTransfer;if(S)switch(x){case"move":y=y.contains(b.row,b.column)?{start:b,end:b}:m.moveText(y,b);break;case"copy":y=m.moveText(y,b,!0)}else{var i=t.getData("Text");y={start:b,end:m.session.insert(b,i)},m.focus(),x=null}return d(),r.preventDefault(e)}},r.addListener(k,"dragstart",this.onDragStart.bind(e)),r.addListener(k,"dragend",this.onDragEnd.bind(e)),r.addListener(k,"dragenter",this.onDragEnter.bind(e)),r.addListener(k,"dragover",this.onDragOver.bind(e)),r.addListener(k,"dragleave",this.onDragLeave.bind(e)),r.addListener(k,"drop",this.onDrop.bind(e));var _=null}function n(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),r=e("../lib/event"),s=e("../lib/useragent"),a=200,l=200,c=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var i=s.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(){var e=this.editor.container;if(s.isIE&&"dragReady"==this.state){var t=n(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);t>3&&e.dragDrop()}if("dragWait"===this.state){var t=n(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);t>0&&(e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton(),o=e.domEvent.detail||1;if(1===o&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in r&&(r.unselectable="on"),t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var a=t.container;a.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(i.prototype),t.DragdropHandler=i}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t){"use strict";var i=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),o=document.createElement("script");o.src=e,n.appendChild(o),o.onload=o.onreadystatechange=function(e,i){(i||!o.readyState||"loaded"==o.readyState||"complete"==o.readyState)&&(o=o.onload=o.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t){"use strict";var i={},n=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(i.length||r){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=n),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;sv;v++){var w=m[v];0===w.name.indexOf("data-ace-")&&(s[r(w.name.replace(/^data-ace-/,""))]=w.value)}var C=p.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);C&&(a=C[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var E in s)"undefined"!=typeof s[E]&&t.set(E,s[E])}function r(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e("./lib/lang"),a=e("./lib/oop"),l=e("./lib/net"),c=e("./lib/event_emitter").EventEmitter,h=function(){return this}(),u={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!u.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return u[e]},t.set=function(e,t){if(!u.hasOwnProperty(e))throw new Error("Unknown config key: "+e);u[e]=t},t.all=function(){return s.copyObject(u)},a.implement(t,c),t.moduleUrl=function(e,t){if(u.$moduleUrls[e])return u.$moduleUrls[e];var i=e.split("/");t=t||i[i.length-2]||"";var n="snippets"==t?"/":"-",o=i[i.length-1];if("worker"==t&&"-"==n){var r=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");o=o.replace(r,"")}(!o||o==t)&&i.length>1&&(o=i[i.length-2]);var s=u[t+"Path"];return null==s?s=u.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+o+this.get("suffix")},t.setModuleUrl=function(e,t){return u.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var o,r;Array.isArray(i)&&(r=i[0],i=i[1]);try{o=e(i)}catch(s){}if(o&&!t.$loading[i])return n&&n(o);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var a=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};return t.get("packaged")?void l.loadScript(t.moduleUrl(i,r),a):a()}},o(!0),t.init=o;var d={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]!==t){var i=this.$options[e];if(!i)return void("undefined"!=typeof console&&console.warn&&console.warn('misspelled option "'+e+'"'));if(i.forwardTo)return this[i.forwardTo]&&this[i.forwardTo].setOption(e,t);i.handlesSet||(this["$"+e]=t),i&&i.set&&i.set.call(this,t)}},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:void("undefined"!=typeof console&&console.warn&&console.warn('misspelled option "'+e+'"'))}},g={};t.defineOptions=function(e,t,i){return e.$options||(g[t]=e.$options={}),Object.keys(i).forEach(function(t){var n=i[t];"string"==typeof n&&(n={forwardTo:n}),n.name||(n.name=t),e.$options[n.name]=n,"initialValue"in n&&(e["$"+n.name]=n.initialValue)}),a.implement(e,d),this},t.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var i=e.$options[t];"value"in i&&e.setOption(t,i.value)})},t.setDefaultValue=function(e,i,n){var o=g[e]||(g[e]={});o[i]&&(o.forwardTo?t.setDefaultValue(o.forwardTo,i,n):o[i].value=n)},t.setDefaultValues=function(e,i){ +Object.keys(i).forEach(function(n){t.setDefaultValue(e,n,i[n])})}}),ace.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/config"],function(e,t){"use strict";var i=e("../lib/event"),n=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,r=e("./default_gutter_handler").GutterHandler,s=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,l=e("../config"),c=function(e){var t=this;this.editor=e,new o(this),new r(this),new a(this);var s=function(t){!e.isFocused()&&e.textInput&&e.textInput.moveToMouse(t),e.focus()},l=e.renderer.getMouseEventTarget();i.addListener(l,"click",this.onMouseEvent.bind(this,"click")),i.addListener(l,"mousemove",this.onMouseMove.bind(this,"mousemove")),i.addMultiMouseDownListener(l,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(i.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),i.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),n.isIE&&(i.addListener(e.renderer.scrollBarV.element,"mousedown",s),i.addListener(e.renderer.scrollBarH.element,"mousemove",s))),i.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var c=e.renderer.$gutter;i.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),i.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),i.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),i.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),i.addListener(l,"mousedown",s),i.addListener(c,"mousedown",function(t){return e.focus(),i.preventDefault(t)}),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),o=e.session.selection.getRange(),r=e.renderer;r.setCursorStyle(!o.isEmpty()&&o.insideStart(n.row,n.column)?"default":"")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new s(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new s(t,this.editor))},this.onMouseWheel=function(e,t){var i=new s(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var o=this.editor.renderer;o.$keepTextAreaAtCursor&&(o.$keepTextAreaAtCursor=null);var r=this,a=function(e){if(e){if(n.isWebKit&&!e.which&&r.releaseMouse)return r.releaseMouse();r.x=e.clientX,r.y=e.clientY,t&&t(e),r.mouseEvent=new s(e,r.editor),r.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),r[r.state+"End"]&&r[r.state+"End"](e),r.state="",null==o.$keepTextAreaAtCursor&&(o.$keepTextAreaAtCursor=!0,o.$moveTextAreaToCursor()),r.isMousePressed=!1,r.$onCaptureMouseMove=r.releaseMouse=null,e&&r.onMouseEvent("mouseup",e)},c=function(){r[r.state]&&r[r.state](),r.$mouseMoved=!1};if(n.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});r.$onCaptureMouseMove=a,r.releaseMouse=i.capture(this.editor.container,a,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&i.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(c.prototype),l.defineOptions(c.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:n.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=c}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t){"use strict";function i(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,o=n.getFoldAt(i.row,i.column,1);o&&(t.getAccelKey()?n.removeFold(o):n.expandFold(o),t.stop())}),e.on("gutterclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,o=e.session;o.foldWidgets&&o.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,o=e.session,r=o.getParentFoldRangeData(n,!0),s=r.range||r.firstRange;if(s){n=s.start.row;var a=o.getFoldAt(n,o.getLine(n).length,1);a?o.removeFold(a):(o.addFold("...",s),e.renderer.scrollCursorIntoView({row:s.start.row,column:0}))}t.stop()}})}t.FoldHandler=i}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t){"use strict";var i=e("../lib/keys"),n=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1==t?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,o){for(var r,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(r=this.$handlers[l].handleKeyboard(this.$data,e,t,i,o),!(r&&r.command&&(s="null"==r.command?!0:a.exec(r.command,this.$editor,r.args,o),s&&o&&-1!=e&&1!=r.passEvent&&1!=r.command.passEvent&&n.stopEvent(o),s))););return s},this.onCommandKey=function(e,t,n){var o=i.keyCodeToString(n);this.$callKeyboardHandlers(t,o,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t){"use strict";var i=function(e,t){return e.row-t.row||e.column-t.column},n=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return 0==this.compare(e,t)?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var o={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?r.fromPoints(t,t):this.isBackwards()?r.fromPoints(t,e):r.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if("undefined"==typeof t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,o=this.session.getFoldLine(n);return o?(n=o.start.row,i=o.end.row):i=n,t===!0?new r(n,0,i,this.session.getLine(i).length):new r(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e,t=this.lead.row,i=this.lead.column,n=this.doc.getLine(t),o=n.substring(i);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(t,i,1);return r?void this.moveCursorTo(r.end.row,r.end.column):((e=this.session.nonTokenRe.exec(o))&&(i+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,o=n.substring(i)),i>=n.length?(this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t=i?(this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft())):((r=this.session.tokenRe.exec(s))&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,i))},this.$shortWordEndIndex=function(e){var t,i,n=0,o=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(i=e[n])&&o.test(i);)n++;if(1>n)for(r.lastIndex=0;(i=e[n])&&!r.test(i);)if(r.lastIndex=0,n++,o.test(i)){if(n>2){n--;break}for(;(i=e[n])&&o.test(i);)n++;if(n>2)break}}return r.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),o=this.session.getFoldAt(e,t,1);if(o)return this.moveCursorTo(o.end.row,o.end.column);if(t==i.length){var r=this.doc.getLength();do e++,n=this.doc.getLine(e);while(r>e&&/^\s*$/.test(n));/^\s+/.test(n)||(n=""),t=0}var s=this.$shortWordEndIndex(n);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,i=this.lead.column;if(e=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(e.start.row,e.start.column);var o=this.session.getLine(t).substring(0,i);if(0===i){do t--,o=this.doc.getLine(t);while(t>0&&/^\s*$/.test(o));i=o.length,/\s+$/.test(o)||(o="")}var r=n.stringReverse(o),s=this.$shortWordEndIndex(r);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var i=this.getCursor();return r.fromPoints(t,i)}catch(n){return r.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=r.fromPoints(e[t].start,e[t].end);e.isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(s.prototype),t.Selection=s}),ace.define("ace/tokenizer",["require","exports","module"],function(e,t){"use strict";var i=2e3,n=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],o=0,r=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),u>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+o+1)}):(u=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),r[o]=l,o+=u,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(r[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){i=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],o=0,r=i.length;r>o;o++)t[o]&&(n[n.length]={type:i[o],value:t[o]});return n},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";for(var i=[],n=this.tokenArray,o=0,r=n.length;r>o;o++)t[o+1]&&(i[i.length]={type:n[o],value:t[o+1]});return i},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf("(?=")){var i=0,n=!1,o={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,r,s,a,l){return n?n="]"!=a:a?n=!0:s?(i==o.stack&&(o.end=l+1,o.stack=-1),i--):r&&(i++,1!=r.length&&(o.stack=i,o.start=l)),e}),null!=o.end&&/^\)*$/.test(e.substr(o.end))&&(e=e.substring(0,o.start)+e.substr(o.end))}return new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var n=t.slice(0);t=n[0],"#tmp"===t&&(n.shift(),t=n.shift())}else var n=[];var o=t||"start",r=this.states[o];r||(o="start",r=this.states[o]);var s=this.matchMappings[o],a=this.regExps[o];a.lastIndex=0;for(var l,c=[],h=0,u=0,d={type:null,value:""};l=a.exec(e);){var g=s.defaultToken,f=null,p=l[0],m=a.lastIndex;if(m-p.length>h){var v=e.substring(h,m-p.length);d.type==g?d.value+=v:(d.type&&c.push(d),d={type:g,value:v})}for(var A=0;Ai){for(u>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&n[0]!==o&&n.unshift("#tmp",o),{tokens:c,state:n.length?n:o}},this.reportError=function(e,t){var i=new Error(e);i.data=t,"object"==typeof console&&console.error&&console.error(i),setTimeout(function(){throw i})}}).call(n.prototype),t.Tokenizer=n}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t){"use strict";var i=e("../lib/lang"),n=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],o=0;o=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i}}).call(i.prototype),t.TokenIterator=i}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t){"use strict";var i=e("../tokenizer").Tokenizer,n=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,r=e("../unicode"),s=e("../lib/lang"),a=e("../token_iterator").TokenIterator,l=e("../range").Range,c=function(){this.HighlightRules=n,this.$behaviour=new o};(function(){this.tokenRe=new RegExp("^["+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function o(e){for(var t=i;n>=t;t++)e(r.getLine(t),t)}var r=t.doc,a=!0,l=!0,c=1/0,h=t.getTabSize(),u=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var d=this.lineCommentStart.map(s.escapeRegExp).join("|"),g=this.lineCommentStart[0];else var d=s.escapeRegExp(this.lineCommentStart),g=this.lineCommentStart;d=new RegExp("^(\\s*)(?:"+d+") ?"),u=t.getUseSoftTabs();var f=function(e,t){var i=e.match(d);if(i){var n=i[1].length,o=i[0].length;A(e,n,o)||" "!=i[0][o-1]||o--,r.removeInLine(t,n,o)}},p=g+" ",m=function(e,t){(!a||/\S/.test(e))&&(A(e,c,c)?r.insertInLine({row:t,column:c},p):r.insertInLine({row:t,column:c},g))},v=function(e){return d.test(e)},A=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var g=this.blockComment.start,w=this.blockComment.end,d=new RegExp("^(\\s*)(?:"+s.escapeRegExp(g)+")"),C=new RegExp("(?:"+s.escapeRegExp(w)+")\\s*$"),m=function(e,t){v(e,t)||(!a||/\S/.test(e))&&(r.insertInLine({row:t,column:e.length},w),r.insertInLine({row:t,column:c},g))},f=function(e,t){var i;(i=e.match(C))&&r.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(d))&&r.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(d.test(e))return!0;for(var n=t.getTokens(i),o=0;oi&&(c=i),l&&!v(e,t)&&(l=!1)):E>e.length&&(E=e.length)}),c==1/0&&(c=E,a=!1,l=!1),u&&c%h!=0&&(c=Math.floor(c/h)*h),o(l?f:m)},this.toggleBlockComment=function(e,t,i,n){var o=this.blockComment;if(o){!o.start&&o[0]&&(o=o[0]);var r,s,c=new a(t,n.row,n.column),h=c.getCurrentToken(),u=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var d,g;h&&/comment/.test(h.type);){var f=h.value.indexOf(o.start);if(-1!=f){var p=c.getCurrentTokenRow(),m=c.getCurrentTokenColumn()+f;d=new l(p,m,p,m+o.start.length);break}h=c.stepBackward()}for(var c=new a(t,n.row,n.column),h=c.getCurrentToken();h&&/comment/.test(h.type);){var f=h.value.indexOf(o.end);if(-1!=f){var p=c.getCurrentTokenRow(),m=c.getCurrentTokenColumn()+f;g=new l(p,m,p,m+o.end.length);break}h=c.stepForward()}g&&t.remove(g),d&&(t.remove(d),r=d.start.row,s=-o.start.length)}else s=o.start.length,r=i.start.row,t.insert(i.end,o.end),t.insert(i.start,o.start);u.start.row==r&&(u.start.column+=s),u.end.row==r&&(u.end.column+=s),t.selection.fromOrientedRange(u)}},this.getNextLineIndent=function(e,t){return this.$getIndent(t)},this.checkOutdent=function(){return!1},this.autoOutdent=function(){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;tr;r++)if("string"==typeof o[r].token)/keyword|support|storage/.test(o[r].token)&&i.push(o[r].regex);else if("object"==typeof o[r].token)for(var a=0,l=o[r].token.length;l>a;a++)if(/keyword|support|storage/.test(o[r].token[a])){var n=o[r].regex.match(/\(.+?\)/g)[a];i.push(n.substr(1,n.length-2))}this.completionKeywords=i}return e?i.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(){var e=this.$keywordList||this.$createKeywordList();return e.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(c.prototype),t.Mode=c}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/event_emitter").EventEmitter,o=t.Anchor=function(e,t,i){this.$onChange=this.onChange.bind(this),this.attach(e),"undefined"==typeof i?this.setPosition(t.row,t.column):this.setPosition(t,i)};(function(){i.implement(this,n),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,i=t.range;if((i.start.row!=i.end.row||i.start.row==this.row)&&!(i.start.row>this.row||i.start.row==this.row&&i.start.column>this.column)){var n=this.row,o=this.column,r=i.start,s=i.end;"insertText"===t.action?r.row===n&&r.column<=o?r.column===o&&this.$insertRight||(r.row===s.row?o+=s.column-r.column:(o-=r.column,n+=s.row-r.row)):r.row!==s.row&&r.row=o?r.column:Math.max(0,o-(s.column-r.column)):r.row!==s.row&&r.row=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):0>e?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),0>t&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,r=e("./anchor").Anchor,s=function(e){this.$lines=[],0===e.length?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){i.implement(this,n),this.setValue=function(e){var t=this.getLength();this.remove(new o(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new r(this,e,t)},this.$split=0==="aaa".split(/a/).length?function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;return e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||0===t.length)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var i=this.$split(t),n=i.splice(0,1)[0],o=0==i.length?null:i.splice(i.length-1,1)[0];return e=this.insertInLine(e,n),null!==o&&(e=this.insertNewLine(e),e=this._insertLines(e.row,i),e=this.insertInLine(e,o||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(0==t.length)return{row:e,column:0};for(;t.length>61440;){var i=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=i.row}var n=[e,0];n.push.apply(n,t),this.$lines.splice.apply(this.$lines,n);var r=new o(e,0,e+t.length,0),s={action:"insertLines",range:r,lines:t};return this._signal("change",{data:s}),r.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var i={row:e.row+1,column:0},n={action:"insertText", +range:o.fromPoints(e,i),text:this.getNewLineCharacter()};return this._signal("change",{data:n}),i},this.insertInLine=function(e,t){if(0==t.length)return e;var i=this.$lines[e.row]||"";this.$lines[e.row]=i.substring(0,e.column)+t+i.substring(e.column);var n={row:e.row,column:e.column+t.length},r={action:"insertText",range:o.fromPoints(e,n),text:t};return this._signal("change",{data:r}),n},this.remove=function(e){if(e instanceof o||(e=o.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end),e.isEmpty())return e.start;var t=e.start.row,i=e.end.row;if(e.isMultiLine()){var n=0==e.start.column?t:t+1,r=i-1;e.end.column>0&&this.removeInLine(i,0,e.end.column),r>=n&&this._removeLines(n,r),n!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,i){if(t!=i){var n=new o(e,t,e,i),r=this.getLine(e),s=r.substring(t,i),a=r.substring(0,t)+r.substring(i,r.length);this.$lines.splice(e,1,a);var l={action:"removeText",range:n,text:s};return this._signal("change",{data:l}),n.start}},this.removeLines=function(e,t){return 0>e||t>=this.getLength()?this.remove(new o(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var i=new o(e,0,t+1,0),n=this.$lines.splice(e,t-e+1),r={action:"removeLines",range:i,nl:this.getNewLineCharacter(),lines:n};return this._signal("change",{data:r}),n},this.removeNewLine=function(e){var t=this.getLine(e),i=this.getLine(e+1),n=new o(e,t.length,e+1,0),r=t+i;this.$lines.splice(e,2,r);var s={action:"removeText",range:n,text:this.getNewLineCharacter()};this._signal("change",{data:s})},this.replace=function(e,t){if(e instanceof o||(e=o.fromPoints(e.start,e.end)),0==t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;if(this.remove(e),t)var i=this.insert(e.start,t);else i=e.start;return i},this.applyDeltas=function(e){for(var t=0;t=0;t--){var i=e[t],n=o.fromPoints(i.range.start,i.range.end);"insertLines"==i.action?this._removeLines(n.start.row,n.end.row-1):"insertText"==i.action?this.remove(n):"removeLines"==i.action?this._insertLines(n.start.row,i.lines):"removeText"==i.action&&this.insert(n.start,i.text)}},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,o=t||0,r=i.length;r>o;o++)if(e-=i[o].length+n,0>e)return{row:o,column:e+i[o].length+n};return{row:r-1,column:i[r-1].length}},this.positionToIndex=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,o=0,r=Math.min(e.row,i.length),s=t||0;r>s;++s)o+=i[s].length+n;return o+e.column}}).call(s.prototype),t.Document=s}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/event_emitter").EventEmitter,o=function(e){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var t=this;this.$worker=function(){if(t.running){for(var e=new Date,i=t.currentLine,n=-1,o=t.doc;t.lines[i];)i++;var r=i,s=o.getLength(),a=0;for(t.running=!1;s>i;){t.$tokenizeRow(i),n=i;do i++;while(t.lines[i]);if(a++,a%5===0&&new Date-e>20){t.running=setTimeout(t.$worker,20);break}}t.currentLine=i,n>=r&&t.fireUpdateEvent(r,n)}}};(function(){i.implement(this,n),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.range,i=t.start.row,n=t.end.row-i;if(0===n)this.lines[i]=null;else if("removeText"==e.action||"removeLines"==e.action)this.lines.splice(i,n+1,null),this.states.splice(i,n+1,null);else{var o=Array(n+1);o.unshift(i,1),this.lines.splice.apply(this.lines,o),this.states.splice.apply(this.states,o)}this.currentLine=Math.min(i,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t){"use strict";var i=e("./lib/lang"),n=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,o,r){if(this.regExp)for(var s=r.firstRow,a=r.lastRow,l=s;a>=l;l++){var c=this.cache[l];null==c&&(c=i.getMatchOffsets(o.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new n(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(o),this.clazz,r)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new n(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var n=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,o,r,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;ce)return{row:n.start.row,column:n.start.column+e};if(e-=n.placeholder.length,0>e)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t){"use strict";var i=e("./range").Range,n=i.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=n,this.pointIndex=function(e,t,i){for(var o=this.ranges,r=i||0;r0)){var l=n(e,s.start);return 0===a?t&&0!==l?-r-2:r:l>0||0===l&&!t?r:-r-1}}return-r-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);0>i&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return 0>n?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.call(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges.splice(t,1):void 0},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return n(e.start,t.start)});for(var i,o=t[0],r=1;rs||(0!=s||i.isEmpty()||o.isEmpty())&&(n(i.end,o.end)<0&&(i.end.row=o.end.row,i.end.column=o.end.column),t.splice(r,1),e.push(o),o=i,r--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges[t]:void 0},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown&&(n=-n-1);var o=this.pointIndex({row:t,column:0},n);0>o&&(o=-o-1);for(var r=[],s=n;o>s;s++)r.push(i[s]);return r},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(e){var t=e.data.range;if("i"==e.data.action[0])var i=t.start,n=t.end;else var n=t.start,i=t.end;for(var o=i.row,r=n.row,s=r-o,a=-i.column+n.column,l=this.ranges,c=0,h=l.length;h>c;c++){var u=l[c];if(!(u.end.rowo)break;if(u.start.row==o&&u.start.column>=i.column&&(u.start.column==i.column&&this.$insertRight||(u.start.column+=a,u.start.row+=s)),u.end.row==o&&u.end.column>=i.column){if(u.end.column==i.column&&this.$insertRight)continue;u.end.column==i.column&&a>0&&h-1>c&&u.end.column>u.start.column&&u.end.column==l[c+1].start.column&&(u.end.column-=a),u.end.column+=a,u.end.row+=s}}}if(0!=s&&h>c)for(;h>c;c++){var u=l[c];u.start.row+=s,u.end.row+=s}}}).call(o.prototype),t.RangeList=o}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t){"use strict";function i(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function n(e,t){i(e.start,t),i(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function r(e,t){o(e.start,t),o(e.end,t)}var s=(e("../range").Range,e("../range_list").RangeList),a=e("../lib/oop"),l=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};a.inherits(l,s),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new l(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);n(e,this.start);for(var t=e.start.row,i=e.start.column,o=0,r=-1;o=e)return o;if(o.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return o}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,o=0;o=t){t>a&&(a>=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,s=!1;e instanceof r?i=e:(i=new r(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(c>a||a==c&&h-2>=l))throw new Error("The range has to be at least 2 characters width");var u=this.getFoldAt(a,l,1),d=this.getFoldAt(c,h,-1);if(u&&d==u)return u.addSubFold(i);u&&!u.range.isStart(a,l)&&this.removeFold(u),d&&!d.range.isEnd(c,h)&&this.removeFold(d);var g=this.getFoldsInRange(i.range);g.length>0&&(this.removeFolds(g),g.forEach(function(e){i.addSubFold(e)}));for(var f=0;f0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,o;if(null==e?(i=new n(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new n(e,0,e,this.getLine(e).length):"row"in e?n.fromPoints(e,e):e,o=this.getFoldsInRangeList(i),t)this.removeFolds(o);else for(var r=o;r.length;)this.expandFolds(r),r=this.getFoldsInRangeList(i);return o.length?o:void 0},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,o){null==n&&(n=e.start.row),null==o&&(o=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var r=this.doc,s="";return e.walk(function(e,t,i,a){if(!(n>t)){if(t==n){if(o>i)return;a=Math.max(o,a)}s+=null!=e?e:r.getLine(t).substring(a,i)}},t,i),s},this.getDisplayLine=function(e,t,i,n){var o=this.getFoldLine(e);if(o)return this.getFoldDisplayLine(o,e,t,i,n);var r;return r=this.doc.getLine(e),r.substring(n||0,t||r.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var i=t.folds.map(function(e){return e.clone()});return new o(e,i)})},this.toggleFold=function(e){var t,i,n=this.selection,o=n.getRange();if(o.isEmpty()){var r=o.start;if(t=this.getFoldAt(r.row,r.column))return void this.expandFold(t);(i=this.findMatchingBracket(r))?1==o.comparePoint(i)?o.end=i:(o.start=i,o.start.column++,o.end.column--):(i=this.findMatchingBracket({row:r.row,column:r.column+1}))?(1==o.comparePoint(i)?o.end=i:o.start=i,o.start.column++):o=this.getCommentFoldRange(r.row,r.column)||o}else{var s=this.getFoldsInRange(o);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(o.start.row,o.start.column)),t&&t.range.toString()==o.toString())return void this.expandFold(t);var a="...";if(!o.isMultiLine()){if(a=this.getTextRange(o),a.length<4)return;a=a.trim().substring(0,2)+".."}this.addFold(a,o)},this.getCommentFoldRange=function(e,t,i){var o=new s(this,e,t),r=o.getCurrentToken();if(r&&/^comment|string/.test(r.type)){var a=new n,l=new RegExp(r.type.replace(/\..*/,"\\."));if(1!=i){do r=o.stepBackward();while(r&&l.test(r.type));o.stepForward()}if(a.start.row=o.getCurrentTokenRow(),a.start.column=o.getCurrentTokenColumn()+2,o=new s(this,e,t),-1!=i){do r=o.stepForward();while(r&&l.test(r.type));r=o.stepBackward()}else r=o.getCurrentToken();return a.end.row=o.getCurrentTokenRow(),a.end.column=o.getCurrentTokenColumn()+r.value.length-2,a}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength(),e=e||0;for(var o=e;t>o;o++)if(null==n[o]&&(n[o]=this.getFoldWidget(o)),"start"==n[o]){var r=this.getFoldWidgetRange(o);if(r&&r.isMultiLine()&&r.end.row<=t&&r.start.row>=e){o=r.end.row;try{var s=this.addFold("...",r);s&&(s.collapseChildren=i)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.removeListener("change",this.$updateFoldWidgets),this._emit("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,o=e-1;o>=0;){var r=i[o];if(null==r&&(r=i[o]=this.getFoldWidget(o)),"start"==r){var s=this.getFoldWidgetRange(o);if(n||(n=s),s&&s.end.row>=e)break}o--}return{range:-1!==o&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},n=this.$toggleFoldWidget(e,i);if(!n){var o=t.target||t.srcElement;o&&/ace_fold-widget/.test(o.className)&&(o.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),o="end"===i?-1:1,r=this.getFoldAt(e,-1===o?0:n.length,o);if(r)return void(t.children||t.all?this.removeFold(r):this.expandFold(r));var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(r=this.getFoldAt(s.start.row,s.start.column,1),r&&s.isEqual(r.range)))return void this.removeFold(r);if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,s.end.row,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(){var e=this.selection.getCursor().row;e=this.getRowFoldStart(e);var t=this.$toggleFoldWidget(e,{});if(!t){var i=this.getParentFoldRangeData(e,!0);if(t=i.range||i.firstRange){e=t.start.row;var n=this.getFoldAt(e,this.getLine(e).length,1);n?this.removeFold(n):this.addFold("...",t)}}},this.updateFoldWidgets=function(e){var t=e.data,i=t.range,n=i.start.row,o=i.end.row-n;if(0===o)this.foldWidgets[n]=null;else if("removeText"==t.action||"removeLines"==t.action)this.foldWidgets.splice(n,o+1,null);else{var r=Array(o+1);r.unshift(n,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}}}var n=e("../range").Range,o=e("./fold_line").FoldLine,r=e("./fold").Fold,s=e("../token_iterator").TokenIterator;t.Folding=i}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t){"use strict";function i(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var o=this.$brackets[e],r=1,s=new n(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end|start|begin)\b/,"")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==o){if(r-=1,0==r)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(r+=1);l-=1}do a=s.stepBackward();while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var o=this.$brackets[e],r=1,s=new n(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:end|start|begin)\b/,"")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var u=c.charAt(l);if(u==o){if(r-=1,0==r)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else u==e&&(r+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var n=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=i}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/lang"),o=e("./config"),r=e("./lib/event_emitter").EventEmitter,s=e("./selection").Selection,a=e("./mode/text").Mode,l=e("./range").Range,c=e("./document").Document,h=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,d=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),"object"==typeof e&&e.getLine||(e=new c(e)),this.setDocument(e),this.selection=new s(this),o.resetOptions(this),this.setMode(t),o._signal("session",this)};(function(){function e(e){return 4352>e?!1:e>=4352&&4447>=e||e>=4515&&4519>=e||e>=4602&&4607>=e||e>=9001&&9002>=e||e>=11904&&11929>=e||e>=11931&&12019>=e||e>=12032&&12245>=e||e>=12272&&12283>=e||e>=12288&&12350>=e||e>=12353&&12438>=e||e>=12441&&12543>=e||e>=12549&&12589>=e||e>=12593&&12686>=e||e>=12688&&12730>=e||e>=12736&&12771>=e||e>=12784&&12830>=e||e>=12832&&12871>=e||e>=12880&&13054>=e||e>=13056&&19903>=e||e>=19968&&42124>=e||e>=42128&&42182>=e||e>=43360&&43388>=e||e>=44032&&55203>=e||e>=55216&&55238>=e||e>=55243&&55291>=e||e>=63744&&64255>=e||e>=65040&&65049>=e||e>=65072&&65106>=e||e>=65108&&65126>=e||e>=65128&&65131>=e||e>=65281&&65376>=e||e>=65504&&65510>=e}i.implement(this,r),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;n>=i;){var o=i+n>>1,r=e[o];if(t>r)i=o+1;else{if(!(r>t))return o;n=o-1}}return i-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){var t=e.data;this.$modified=!0,this.$resetRowCache(t.range.start.row);var i=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||t.ignore||(this.$deltasDoc.push(t),i&&0!=i.length&&this.$deltasFold.push({action:"removeFolds",folds:i}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(t),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var i,n=this.bgTokenizer.getTokens(e),o=0;if(null==t)r=n.length-1,o=this.getLine(e).length;else for(var r=0;r=t));r++);return(i=n[r])?(i.index=r,i.start=o-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=n.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?n.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e,t=this.lead.row,i=this.lead.column,n=this.doc.getLine(t),o=n.substring(i);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(t,i,1);return r?void this.moveCursorTo(r.end.row,r.end.column):((e=this.session.nonTokenRe.exec(o))&&(i+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,o=n.substring(i)),i>=n.length?(this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t=i?(this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft())):((r=this.session.tokenRe.exec(s))&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,i))},this.$shortWordEndIndex=function(e){var t,i,n=0,o=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(i=e[n])&&o.test(i);)n++;if(1>n)for(r.lastIndex=0;(i=e[n])&&!r.test(i);)if(r.lastIndex=0,n++,o.test(i)){if(n>2){n--;break}for(;(i=e[n])&&o.test(i);)n++;if(n>2)break}}return r.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),o=this.session.getFoldAt(e,t,1);if(o)return this.moveCursorTo(o.end.row,o.end.column);if(t==i.length){var r=this.doc.getLength();do e++,n=this.doc.getLine(e);while(r>e&&/^\s*$/.test(n));/^\s+/.test(n)||(n=""),t=0}var s=this.$shortWordEndIndex(n);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,i=this.lead.column;if(e=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(e.start.row,e.start.column);var o=this.session.getLine(t).substring(0,i);if(0===i){do t--,o=this.doc.getLine(t);while(t>0&&/^\s*$/.test(o));i=o.length,/\s+$/.test(o)||(o="")}var r=n.stringReverse(o),s=this.$shortWordEndIndex(r);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var i=this.getCursor();return r.fromPoints(t,i)}catch(n){return r.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=r.fromPoints(e[t].start,e[t].end);e.isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(s.prototype),t.Selection=s}),ace.define("ace/tokenizer",["require","exports","module"],function(e,t){"use strict";var i=2e3,n=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],o=0,r=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),u>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+o+1)}):(u=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),r[o]=l,o+=u,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(r[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){i=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],o=0,r=i.length;r>o;o++)t[o]&&(n[n.length]={type:i[o],value:t[o]});return n},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";for(var i=[],n=this.tokenArray,o=0,r=n.length;r>o;o++)t[o+1]&&(i[i.length]={type:n[o],value:t[o+1]});return i},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf("(?=")){var i=0,n=!1,o={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,r,s,a,l){return n?n="]"!=a:a?n=!0:s?(i==o.stack&&(o.end=l+1,o.stack=-1),i--):r&&(i++,1!=r.length&&(o.stack=i,o.start=l)),e}),null!=o.end&&/^\)*$/.test(e.substr(o.end))&&(e=e.substring(0,o.start)+e.substr(o.end))}return new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var n=t.slice(0);t=n[0],"#tmp"===t&&(n.shift(),t=n.shift())}else var n=[];var o=t||"start",r=this.states[o];r||(o="start",r=this.states[o]);var s=this.matchMappings[o],a=this.regExps[o];a.lastIndex=0;for(var l,c=[],h=0,u=0,d={type:null,value:""};l=a.exec(e);){var g=s.defaultToken,f=null,p=l[0],m=a.lastIndex;if(m-p.length>h){var v=e.substring(h,m-p.length);d.type==g?d.value+=v:(d.type&&c.push(d),d={type:g,value:v})}for(var A=0;Ai){for(u>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&n[0]!==o&&n.unshift("#tmp",o),{tokens:c,state:n.length?n:o}},this.reportError=function(e,t){var i=new Error(e);i.data=t,"object"==typeof console&&console.error&&console.error(i),setTimeout(function(){throw i})}}).call(n.prototype),t.Tokenizer=n}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t){"use strict";var i=e("../lib/lang"),n=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],o=0;o=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i}}).call(i.prototype),t.TokenIterator=i}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t){"use strict";var i=e("../tokenizer").Tokenizer,n=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,r=e("../unicode"),s=e("../lib/lang"),a=e("../token_iterator").TokenIterator,l=e("../range").Range,c=function(){this.HighlightRules=n,this.$behaviour=new o};(function(){this.tokenRe=new RegExp("^["+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function o(e){for(var t=i;n>=t;t++)e(r.getLine(t),t)}var r=t.doc,a=!0,l=!0,c=1/0,h=t.getTabSize(),u=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var d=this.lineCommentStart.map(s.escapeRegExp).join("|"),g=this.lineCommentStart[0];else var d=s.escapeRegExp(this.lineCommentStart),g=this.lineCommentStart;d=new RegExp("^(\\s*)(?:"+d+") ?"),u=t.getUseSoftTabs();var f=function(e,t){var i=e.match(d);if(i){var n=i[1].length,o=i[0].length;A(e,n,o)||" "!=i[0][o-1]||o--,r.removeInLine(t,n,o)}},p=g+" ",m=function(e,t){(!a||/\S/.test(e))&&(A(e,c,c)?r.insertInLine({row:t,column:c},p):r.insertInLine({row:t,column:c},g))},v=function(e){return d.test(e)},A=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var g=this.blockComment.start,w=this.blockComment.end,d=new RegExp("^(\\s*)(?:"+s.escapeRegExp(g)+")"),C=new RegExp("(?:"+s.escapeRegExp(w)+")\\s*$"),m=function(e,t){v(e,t)||(!a||/\S/.test(e))&&(r.insertInLine({row:t,column:e.length},w),r.insertInLine({row:t,column:c},g))},f=function(e,t){var i;(i=e.match(C))&&r.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(d))&&r.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(d.test(e))return!0;for(var n=t.getTokens(i),o=0;oi&&(c=i),l&&!v(e,t)&&(l=!1)):E>e.length&&(E=e.length)}),c==1/0&&(c=E,a=!1,l=!1),u&&c%h!=0&&(c=Math.floor(c/h)*h),o(l?f:m)},this.toggleBlockComment=function(e,t,i,n){var o=this.blockComment;if(o){!o.start&&o[0]&&(o=o[0]);var r,s,c=new a(t,n.row,n.column),h=c.getCurrentToken(),u=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var d,g;h&&/comment/.test(h.type);){var f=h.value.indexOf(o.start);if(-1!=f){var p=c.getCurrentTokenRow(),m=c.getCurrentTokenColumn()+f;d=new l(p,m,p,m+o.start.length);break}h=c.stepBackward()}for(var c=new a(t,n.row,n.column),h=c.getCurrentToken();h&&/comment/.test(h.type);){var f=h.value.indexOf(o.end);if(-1!=f){var p=c.getCurrentTokenRow(),m=c.getCurrentTokenColumn()+f;g=new l(p,m,p,m+o.end.length);break}h=c.stepForward()}g&&t.remove(g),d&&(t.remove(d),r=d.start.row,s=-o.start.length)}else s=o.start.length,r=i.start.row,t.insert(i.end,o.end),t.insert(i.start,o.start);u.start.row==r&&(u.start.column+=s),u.end.row==r&&(u.end.column+=s),t.selection.fromOrientedRange(u)}},this.getNextLineIndent=function(e,t){return this.$getIndent(t)},this.checkOutdent=function(){return!1},this.autoOutdent=function(){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;tr;r++)if("string"==typeof o[r].token)/keyword|support|storage/.test(o[r].token)&&i.push(o[r].regex);else if("object"==typeof o[r].token)for(var a=0,l=o[r].token.length;l>a;a++)if(/keyword|support|storage/.test(o[r].token[a])){var n=o[r].regex.match(/\(.+?\)/g)[a];i.push(n.substr(1,n.length-2))}this.completionKeywords=i}return e?i.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(){var e=this.$keywordList||this.$createKeywordList();return e.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(c.prototype),t.Mode=c}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/event_emitter").EventEmitter,o=t.Anchor=function(e,t,i){this.$onChange=this.onChange.bind(this),this.attach(e),"undefined"==typeof i?this.setPosition(t.row,t.column):this.setPosition(t,i)};(function(){i.implement(this,n),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,i=t.range;if((i.start.row!=i.end.row||i.start.row==this.row)&&!(i.start.row>this.row||i.start.row==this.row&&i.start.column>this.column)){var n=this.row,o=this.column,r=i.start,s=i.end;"insertText"===t.action?r.row===n&&r.column<=o?r.column===o&&this.$insertRight||(r.row===s.row?o+=s.column-r.column:(o-=r.column,n+=s.row-r.row)):r.row!==s.row&&r.row=o?r.column:Math.max(0,o-(s.column-r.column)):r.row!==s.row&&r.row=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):0>e?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),0>t&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,r=e("./anchor").Anchor,s=function(e){this.$lines=[],0===e.length?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){i.implement(this,n),this.setValue=function(e){var t=this.getLength();this.remove(new o(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new r(this,e,t)},this.$split=0==="aaa".split(/a/).length?function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;return e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||0===t.length)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var i=this.$split(t),n=i.splice(0,1)[0],o=0==i.length?null:i.splice(i.length-1,1)[0];return e=this.insertInLine(e,n),null!==o&&(e=this.insertNewLine(e),e=this._insertLines(e.row,i),e=this.insertInLine(e,o||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(0==t.length)return{row:e,column:0};for(;t.length>61440;){var i=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=i.row}var n=[e,0];n.push.apply(n,t),this.$lines.splice.apply(this.$lines,n);var r=new o(e,0,e+t.length,0),s={action:"insertLines",range:r,lines:t};return this._signal("change",{data:s}),r.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var i={row:e.row+1,column:0},n={action:"insertText",range:o.fromPoints(e,i),text:this.getNewLineCharacter()};return this._signal("change",{data:n}),i},this.insertInLine=function(e,t){if(0==t.length)return e;var i=this.$lines[e.row]||"";this.$lines[e.row]=i.substring(0,e.column)+t+i.substring(e.column);var n={row:e.row,column:e.column+t.length},r={action:"insertText",range:o.fromPoints(e,n),text:t};return this._signal("change",{data:r}),n},this.remove=function(e){if(e instanceof o||(e=o.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end),e.isEmpty())return e.start;var t=e.start.row,i=e.end.row;if(e.isMultiLine()){var n=0==e.start.column?t:t+1,r=i-1;e.end.column>0&&this.removeInLine(i,0,e.end.column),r>=n&&this._removeLines(n,r),n!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,i){if(t!=i){var n=new o(e,t,e,i),r=this.getLine(e),s=r.substring(t,i),a=r.substring(0,t)+r.substring(i,r.length);this.$lines.splice(e,1,a);var l={action:"removeText",range:n,text:s};return this._signal("change",{data:l}),n.start}},this.removeLines=function(e,t){return 0>e||t>=this.getLength()?this.remove(new o(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var i=new o(e,0,t+1,0),n=this.$lines.splice(e,t-e+1),r={action:"removeLines",range:i,nl:this.getNewLineCharacter(),lines:n};return this._signal("change",{data:r}),n},this.removeNewLine=function(e){var t=this.getLine(e),i=this.getLine(e+1),n=new o(e,t.length,e+1,0),r=t+i;this.$lines.splice(e,2,r);var s={action:"removeText",range:n,text:this.getNewLineCharacter()};this._signal("change",{data:s})},this.replace=function(e,t){if(e instanceof o||(e=o.fromPoints(e.start,e.end)),0==t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;if(this.remove(e),t)var i=this.insert(e.start,t);else i=e.start;return i},this.applyDeltas=function(e){for(var t=0;t=0;t--){var i=e[t],n=o.fromPoints(i.range.start,i.range.end);"insertLines"==i.action?this._removeLines(n.start.row,n.end.row-1):"insertText"==i.action?this.remove(n):"removeLines"==i.action?this._insertLines(n.start.row,i.lines):"removeText"==i.action&&this.insert(n.start,i.text)}},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,o=t||0,r=i.length;r>o;o++)if(e-=i[o].length+n,0>e)return{row:o,column:e+i[o].length+n};return{row:r-1,column:i[r-1].length}},this.positionToIndex=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,o=0,r=Math.min(e.row,i.length),s=t||0;r>s;++s)o+=i[s].length+n;return o+e.column}}).call(s.prototype),t.Document=s}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/event_emitter").EventEmitter,o=function(e){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var t=this;this.$worker=function(){if(t.running){for(var e=new Date,i=t.currentLine,n=-1,o=t.doc;t.lines[i];)i++;var r=i,s=o.getLength(),a=0;for(t.running=!1;s>i;){t.$tokenizeRow(i),n=i;do i++;while(t.lines[i]);if(a++,a%5===0&&new Date-e>20){t.running=setTimeout(t.$worker,20);break}}t.currentLine=i,n>=r&&t.fireUpdateEvent(r,n)}}};(function(){i.implement(this,n),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.range,i=t.start.row,n=t.end.row-i;if(0===n)this.lines[i]=null;else if("removeText"==e.action||"removeLines"==e.action)this.lines.splice(i,n+1,null),this.states.splice(i,n+1,null);else{var o=Array(n+1);o.unshift(i,1),this.lines.splice.apply(this.lines,o),this.states.splice.apply(this.states,o)}this.currentLine=Math.min(i,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t){"use strict";var i=e("./lib/lang"),n=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,o,r){if(this.regExp)for(var s=r.firstRow,a=r.lastRow,l=s;a>=l;l++){var c=this.cache[l];null==c&&(c=i.getMatchOffsets(o.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new n(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(o),this.clazz,r)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new n(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var n=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,o,r,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;ce)return{row:n.start.row,column:n.start.column+e};if(e-=n.placeholder.length,0>e)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t){"use strict";var i=e("./range").Range,n=i.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=n,this.pointIndex=function(e,t,i){for(var o=this.ranges,r=i||0;r0)){var l=n(e,s.start);return 0===a?t&&0!==l?-r-2:r:l>0||0===l&&!t?r:-r-1}}return-r-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);0>i&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return 0>n?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.call(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges.splice(t,1):void 0},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return n(e.start,t.start)});for(var i,o=t[0],r=1;rs||(0!=s||i.isEmpty()||o.isEmpty())&&(n(i.end,o.end)<0&&(i.end.row=o.end.row,i.end.column=o.end.column),t.splice(r,1),e.push(o),o=i,r--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges[t]:void 0},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown&&(n=-n-1);var o=this.pointIndex({row:t,column:0},n);0>o&&(o=-o-1);for(var r=[],s=n;o>s;s++)r.push(i[s]);return r},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(e){var t=e.data.range;if("i"==e.data.action[0])var i=t.start,n=t.end;else var n=t.start,i=t.end;for(var o=i.row,r=n.row,s=r-o,a=-i.column+n.column,l=this.ranges,c=0,h=l.length;h>c;c++){var u=l[c];if(!(u.end.rowo)break;if(u.start.row==o&&u.start.column>=i.column&&(u.start.column==i.column&&this.$insertRight||(u.start.column+=a,u.start.row+=s)),u.end.row==o&&u.end.column>=i.column){if(u.end.column==i.column&&this.$insertRight)continue;u.end.column==i.column&&a>0&&h-1>c&&u.end.column>u.start.column&&u.end.column==l[c+1].start.column&&(u.end.column-=a),u.end.column+=a,u.end.row+=s}}}if(0!=s&&h>c)for(;h>c;c++){var u=l[c];u.start.row+=s,u.end.row+=s}}}).call(o.prototype),t.RangeList=o}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t){"use strict";function i(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function n(e,t){i(e.start,t),i(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function r(e,t){o(e.start,t),o(e.end,t)}var s=(e("../range").Range,e("../range_list").RangeList),a=e("../lib/oop"),l=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};a.inherits(l,s),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new l(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);n(e,this.start);for(var t=e.start.row,i=e.start.column,o=0,r=-1;o0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var o=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var o=/\s/;else var o=this.nonTokenRe;var r=t;if(r>0){do r--;while(r>=0&&i.charAt(r).match(o));r++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,o=0,r=this.$foldData[o],s=r?r.start.row:1/0,a=t.length,l=0;a>l;l++){if(l>s){if(l=r.end.row+1,l>=a)break;r=this.$foldData[o++],s=r?r.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var o=e[n];"doc"==o.group?(this.doc.revertDeltas(o.deltas),i=this.$getUndoSelection(o.deltas,!0,i)):o.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(r.start.column+=a),r.end.row==e.end.row&&r.end.column>e.end.column&&(r.end.column+=a)),s&&r.start.row>=e.end.row&&(r.start.row+=s,r.end.row+=s)}if(r.end=this.insert(r.start,n),o.length){var c=e.start,h=r.start,s=h.row-c.row,a=h.column-c.column;this.addFolds(o.map(function(e){return e=e.clone(),e.start.row==c.row&&(e.start.column+=a),e.end.row==c.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return r},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;t>=n;n++)this.insert({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new l(0,0,0,0),n=this.getTabSize(),o=t.start.row;o<=t.end.row;++o){var r=this.getLine(o);i.start.row=o,i.end.row=o;for(var s=0;n>s&&" "==r.charAt(s);++s);n>s&&" "==r.charAt(s)?(i.start.column=s,i.end.column=s+1):(i.start.column=0,i.end.column=s),this.remove(i)}},this.$moveLines=function(e,t,i){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),0>i){var n=this.getRowFoldStart(e+i);if(0>n)return 0;var o=n-e}else if(i>0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var o=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var o=t-e+1}var r=new l(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(r).map(function(e){return e=e.clone(),e.start.row+=o,e.end.row+=o,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+o,a),s.length&&this.addFolds(s),o},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return 0>t?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),0>e)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)&&(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1?(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t,i=this.$useWrapMode,n=e.data.action,o=e.data.range.start.row,r=e.data.range.end.row,s=e.data.range.start,a=e.data.range.end,l=null;if(-1!=n.indexOf("Lines")?(r="insertLines"==n?o+e.data.lines.length:o,t=e.data.lines?e.data.lines.length:r-o):t=r-o,this.$updating=!0,0!=t)if(-1!=n.indexOf("remove")){this[i?"$wrapData":"$rowLengthCache"].splice(o,t);var c=this.$foldData;l=this.getFoldsInRange(e.data.range),this.removeFolds(l);var h=this.getFoldLine(a.row),u=0;if(h){h.addRemoveChars(a.row,a.column,s.column-a.column),h.shiftRow(-t);var d=this.getFoldLine(o);d&&d!==h&&(d.merge(h),h=d),u=c.indexOf(h)+1}for(u;u=a.row&&h.shiftRow(-t)}r=o}else{var g=Array(t);g.unshift(o,0);var f=i?this.$wrapData:this.$rowLengthCache;f.splice.apply(f,g);var c=this.$foldData,h=this.getFoldLine(o),u=0;if(h){var p=h.range.compareInside(s.row,s.column);0==p?(h=h.split(s.row,s.column),h&&(h.shiftRow(t),h.addRemoveChars(r,0,a.column-s.column))):-1==p&&(h.addRemoveChars(o,0,a.column-s.column),h.shiftRow(t)),u=c.indexOf(h)+1}for(u;u=o&&h.shiftRow(t)}}else{t=Math.abs(e.data.range.start.column-e.data.range.end.column),-1!=n.indexOf("remove")&&(l=this.getFoldsInRange(e.data.range),this.removeFolds(l),t=-t);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,s.column,t)}return i&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,i?this.$updateWrapData(o,r):this.$updateRowLengthCache(o,r),l},this.$updateRowLengthCache=function(e,t){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,n,o=this.doc.getAllLines(),r=this.getTabSize(),s=this.$wrapData,a=this.$wrapLimit,l=e;for(t=Math.min(t,o.length-1);t>=l;)n=this.getFoldLine(l,n),n?(i=[],n.walk(function(e,t,n,r){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=c;for(var a=1;at;){var h=r+t;if(e[h-1]>=f&&e[h]>=f)i(h);else if(e[h]!=c&&e[h]!=d){for(var u=Math.max(h-(l?10:t-(t>>2)),r-1);h>u&&e[h]u&&e[h]u&&e[h]==g;)h--}else for(;h>u&&e[h]u?i(++h):(h=r+t,e[h]==s&&h--,i(h))}else{for(h;h!=r-1&&e[h]!=c;h--);if(h>r){i(h);continue}for(h=r+t;hc;c++)r.push(m)}else 32==l?r.push(f):l>39&&48>l||l>57&&64>l?r.push(g):l>=4352&&e(l)?r.push(t,s):r.push(t)}return r},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var o,r;for(r=0;r=4352&&e(o)?2:1,!(n>i));r++);return[n,r]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var i=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(i)},this.getDocumentLastRowColumnPosition=function(e,t){var i=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(i,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:void 0},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(0>e)return{row:0,column:0};var i,n,o=0,r=0,s=0,a=0,l=this.$screenRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var s=l[c],o=this.$docRowCache[c],u=e>l[h-1];else var u=!h;for(var d=this.getLength()-1,g=this.getNextFoldLine(o),f=g?g.start.row:1/0;e>=s&&(a=this.getRowLength(o),!(s+a>e||o>=d));)s+=a,o++,o>f&&(o=g.end.row+1,g=this.getNextFoldLine(o,g),f=g?g.start.row:1/0),u&&(this.$docRowCache.push(o),this.$screenRowCache.push(s));if(g&&g.start.row<=o)i=this.getFoldDisplayLine(g),o=g.start.row;else{if(e>=s+a||o>d)return{row:d,column:this.getLine(d).length};i=this.getLine(o),g=null}if(this.$useWrapMode){var p=this.$wrapData[o];if(p){var m=Math.floor(e-s);n=p[m],m>0&&p.length&&(r=p[m-1]||p[p.length-1],i=i.substring(r))}}return r+=this.$getStringScreenWidth(i,t)[1],this.$useWrapMode&&r>=n&&(r=n-1),g?g.idxToPosition(r):{row:o,column:r}},this.documentToScreenPosition=function(e,t){if("undefined"==typeof t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,o=null,r=null;r=this.getFoldAt(e,t,1),r&&(e=r.start.row,t=r.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],u=e>l[h-1];else var u=!h;for(var d=this.getNextFoldLine(a),g=d?d.start.row:1/0;e>a;){if(a>=g){if(s=d.end.row+1,s>e)break;d=this.getNextFoldLine(s,d),g=d?d.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,u&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var f="";if(d&&a>=g?(f=this.getFoldDisplayLine(d,e,t),o=d.start.row):(f=this.getLine(e).substring(0,t),o=e),this.$useWrapMode){var p=this.$wrapData[o];if(p){for(var m=0;f.length>=p[m];)n++,m++;f=f.substring(p[m-1]||0,f.length)}}return{row:n,column:this.$getStringScreenWidth(f)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,o=0,t=this.$foldData[o++],r=t?t.start.row:1/0;i>n;){var s=this.$wrapData[n];e+=s?s.length+1:1,n++,n>r&&(n=t.end.row+1,t=this.$foldData[o++],r=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,o=0;o=u;u++){for(var d=0;c>d;d++)if(-1==r[u+d].search(a[d]))continue e;var g=r[u],f=r[u+c-1],p=g.length-g.match(a[0])[0].length,m=f.match(a[c-1])[0].length;l&&l.end.row===u&&l.end.column>p||(s.push(l=new o(u,p,u+c-1,m)),c>2&&(u=u+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[d].end.column>E&&s[d].end.row==n.end.row;)d--;for(s=s.slice(v,d+1),v=0,d=s.length;d>v;v++)s[v].start.row+=n.start.row,s[v].end.row+=n.start.row}return s},this.replace=function(e,t){var i=this.$options,n=this.$assembleRegExp(i);if(i.$isMultiLine)return t;if(n){var o=n.exec(e);if(!o||o[0].length!=e.length)return null;if(t=e.replace(n,t),i.preserveCase){t=t.split("");for(var r=Math.min(e.length,e.length);r--;){var s=e[r];t[r]=s&&s.toLowerCase()!=s?t[r].toUpperCase():t[r].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var r,s=this,a=t.backwards;if(t.$isMultiLine)var l=n.length,c=function(t,i,s){var a=t.search(n[0]);if(-1!=a){for(var c=1;l>c;c++)if(t=e.getLine(i+c),-1==t.search(n[c]))return;var h=t.match(n[l-1])[0].length,u=new o(i,a,i+l-1,h);return 1==n.offset?(u.start.row--,u.start.column=Number.MAX_VALUE):s&&(u.start.column+=s),r(u)?!0:void 0}};else if(a)var c=function(e,t,o){for(var s=i.getMatchOffsets(e,n),a=s.length-1;a>=0;a--)if(r(s[a],t,o))return!0};else var c=function(e,t,o){for(var s=i.getMatchOffsets(e,n),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=r.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=r.row,o=e.getLine(n).substr(r.column);if(!i(o,n,r.column)){for(n+=1;a>=n;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=r.row;a>=n;n++)if(i(e.getLine(n),n))return}};return{forEach:l}}}).call(r.prototype),t.Search=r}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t){"use strict";function i(e,t){this.platform=t||(r.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function n(e,t){i.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),r=e("../lib/useragent"),s=o.KEY_MODS;n.prototype=i.prototype,function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var o in n){var r=n[o];if(r==e)delete n[o];else if(Array.isArray(r)){var s=r.indexOf(e);-1!=s&&(r.splice(s,1),1==r.length&&(n[o]=r[0]))}}},this.bindKey=function(e,t,i){return"object"==typeof e&&(e=e[this.platform]),e?"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var o=e.split(/\s+/);e=o.pop(),o.forEach(function(e){var t=this.parseKeys(e),i=s[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var r=this.parseKeys(e),a=s[r.hashId]+r.key;this._addCommandToBinding(n+a,t,i)},this):void 0},this._addCommandToBinding=function(e,t,i){var n,o=this.commandKeyBinding;t?!o[e]||this.$singleCommand?o[e]=t:(Array.isArray(o[e])?-1!=(n=o[e].indexOf(t))&&o[e].splice(n,1):o[e]=[o[e]],i||t.isDefault?o[e].unshift(t):o[e].push(t)):delete o[e]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=s[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){var o=s[t]+i,r=this.commandKeyBinding[o];return e.$keyChain&&(e.$keyChain+=" "+o,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&n>0&&(e.$keyChain=""),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}}.call(i.prototype),t.HashHandler=i,t.MultiHashHandler=n}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("../lib/oop"),n=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,r=function(e,t){n.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};i.inherits(r,n),function(){i.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var o={editor:t,command:e,args:i};return o.returnValue=this._emit("exec",o),this._signal("afterExec",o),o.returnValue===!1?!1:!0},this.toggleRecording=function(e){return this.$inReplay?void 0:(e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0))},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(r.prototype),t.CommandManager=r}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t){"use strict";function i(e,t){return{win:e,mac:t}}var n=e("../lib/lang"),o=e("../config"),r=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:i("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:i("Alt-E","Ctrl-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:i("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:i("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:i(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:i("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:i("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:i("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:i("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:i("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:i("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:i("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:i("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:i("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:i("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:i("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:i("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:i("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:i("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:i("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:i("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:i("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach", +readOnly:!0},{name:"selecttoend",bindKey:i("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:i("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:i("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:i("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:i("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:i("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:i("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:i("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:i("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:i("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:i("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:i("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:i("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:i("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:i("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:i("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:i(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:i("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:i(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:i("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:i("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:i("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:i("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:i("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:i("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"passKeysToBrowser",bindKey:i("null","null"),exec:function(){},passEvent:!0,readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:i("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:i("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:i("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:i("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:i("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:i("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:i("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:i("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:i("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:i("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:i("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:i("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:i("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:i("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:i("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:i("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:i("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:i("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:i("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:i("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:i("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:i("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:i("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:i("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:i("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(n.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:i(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:i("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:i("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:i("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:i("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:i(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),o=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),s=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=o.row+1;h++){var u=n.stringTrimLeft(n.stringTrimRight(e.session.doc.getLine(h)));0!==u.length&&(u=" "+u),c+=u}o.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(s=e.session.doc.getLine(i.row).length>s?s+1:s,e.selection.moveCursorTo(i.row,s))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:i(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,o=[];n.length<1&&(n=[e.selection.getRange()]);for(var s=0;s=n.lastRow||i.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==t.scrollIntoView&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var o=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(o)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;m.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.removeEventListener("changeCursor",this.$onCursorChange),i.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||n.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new d(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new v(e.session,i.row,i.column),o=n.getCurrentToken();if(!o||-1===o.type.indexOf("tag-name"))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var r=o.value,s=0,a=n.stepBackward();if("<"==a.value){do a=o,o=n.stepForward(),o&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"=0)}else{do o=a,a=n.stepBackward(),o&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"=s);n.stepForward()}if(!o)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=n.getCurrentTokenRow(),c=n.getCurrentTokenColumn(),h=new d(l,c,l,c+o.value.length);t.$tagHighlight&&0!==h.compareRange(t.$backMarkers[t.$tagHighlight].range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),h&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(h,"ace_bracket","text"))}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t,i=e.data,n=i.range;t=n.start.row==n.end.row&&"insertLines"!=i.action&&"removeLines"!=i.action?n.end.row:1/0,this.renderer.updateLines(n.start.row,t,this.session.$useWrapMode),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new d(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(){var e=this.session;if(e.$selectionMarker&&e.removeMarker(e.$selectionMarker),e.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var t=this.selection.getRange(),i=this.getSelectionStyle();e.$selectionMarker=e.addMarker(t,"ace_selection",i)}var n=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(n),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,o=e.getLine(t.start.row),r=o.length,s=o.substring(Math.max(i,0),Math.min(n,r));if(!(i>=0&&/^[\w\d]/.test(s)||r>=n&&/[\w\d]$/.test(s))&&(s=o.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s});return a}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(!this.$readOnly){var t={text:e};this._signal("paste",t),this.insert(t.text,!0)}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),o=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var r=n.transformAction(i.getState(o.row),"insertion",this,i,e);r&&(e!==r.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=r.text)}if(" "==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new d.fromPoints(o,o);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();o=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(o.row);if(o.column>a.search(/\S|$/)){var l=a.substr(o.column).search(/\S|$/);i.doc.removeInLine(o.row,o.column,o.column+l)}}this.clearSelection();{var c=o.column,h=i.getState(o.row),a=i.getLine(o.row),u=n.checkOutdent(h,a,e);i.insert(o,e)}if(r&&r.selection&&this.selection.setSelectionRange(2==r.selection.length?new d(o.row,c+r.selection[0],o.row,c+r.selection[1]):new d(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3])),i.getDocument().isNewLine(e)){var g=n.getNextLineIndent(h,a.slice(0,o.column),i.getTabString());i.insert({row:o.row+1,column:0},g)}u&&n.autoOutdent(h,i,o.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),o=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var r=i.getTextRange(t);if("\n"==r[r.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}o&&(t=o)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,o=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new d(0,0,0,0),o=e.first;o<=e.last;o++){var r=t.getLine(o);n.start.row=o,n.end.row=o,n.end.column=r.length,t.replace(n,i[o-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){var r={value:o[0],start:o.index,end:o.index+o[0].length};return r}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new d(t,i-1,t,i),o=this.session.getTextRange(n);if(!isNaN(parseFloat(o))&&isFinite(o)){var r=this.getNumberAt(t,i);if(r){var s=r.value.indexOf(".")>=0?r.start+r.value.indexOf(".")+1:r.end,a=r.start+r.value.length-s,l=parseFloat(r.value);l*=Math.pow(10,a),e*=s!==r.end&&s>i?Math.pow(10,r.end-i-1):Math.pow(10,r.end-i),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),h=new d(t,r.start,t,r.end);this.session.replace(h,c),this.moveCursorTo(t,Math.max(r.start+1,i+c.length-r.value.length))}}},this.removeLines=function(){var e,t=this.$getSelectedRows();e=0===t.first||t.last+1=s;)r[a].moveBy(o,0),a--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,o=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(o,0)}):t===!1&&(this.selection.moveCursorBy(o,0),this.selection.clearSelection()),this.$blockScrolling--;var r=i.scrollTop;i.scrollBy(0,o*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(r)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new v(this.session,i.row,i.column),o=n.getCurrentToken(),r=o||n.stepForward();if(r){var s,a,l=!1,c={},h=i.column-r.start,u={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(r.value.match(/[{}()\[\]]/g)){for(;h=0;--r)this.$tryReplace(i[r],e)&&n++;return this.selection.setSelectionRange(o),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&i.mixin(t,e);var o=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(o)||this.$search.$options.needle,e||(o=this.session.getWordRange(o.start.row,o.start.column),e=this.session.getTextRange(o)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:o});var r=this.$search.find(this.session);return t.preventScroll?r:r?(this.revealRange(r,n),r):(t.backwards?o.start=o.end:o.end=o.start,void this.selection.setRange(o))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var o=this.$scrollAnchor;o.style.cssText="position:absolute",this.container.insertBefore(o,this.container.firstChild);var r=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,r=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=r.top-s.offset;n=r.top>=0&&a+t.top<0?!0:r.topwindow.innerHeight?!1:null,null!=n&&(o.style.top=a+"px",o.style.left=r.left+"px",o.style.height=s.lineHeight+"px",o.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",r),this.renderer.removeEventListener("afterRender",a),this.renderer.removeEventListener("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,n.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(A.prototype),m.defineOptions(A.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=A}),ace.define("ace/undomanager",["require","exports","module"],function(e,t){"use strict";var i=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=0/0),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),i=null;return t&&(i=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),i},this.redo=function(e){var t=this.$redoStack.pop(),i=null;return t&&(i=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),i},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter}}).call(i.prototype),t.UndoManager=i}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("../lib/dom"),n=e("../lib/oop"),o=e("../lib/lang"),r=e("../lib/event_emitter").EventEmitter,s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){n.implement(this,r),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(p=r.end.row+1,r=t.getNextFoldLine(p,r),s=r?r.start.row:1/0),p>o){for(;this.$cells.length>f+1;)g=this.$cells.pop(),this.element.removeChild(g.element);break}g=this.$cells[++f],g||(g={element:null,textNode:null,foldWidget:null},g.element=i.createElement("div"),g.textNode=document.createTextNode(""),g.element.appendChild(g.textNode),this.element.appendChild(g.element),this.$cells[f]=g);var m="ace_gutter-cell ";l[p]&&(m+=l[p]),c[p]&&(m+=c[p]),this.$annotations[p]&&(m+=this.$annotations[p].className),g.element.className!=m&&(g.element.className=m);var v=t.getRowLength(p)*e.lineHeight+"px";if(v!=g.element.style.height&&(g.element.style.height=v),a){var A=a[p];null==A&&(A=a[p]=t.getFoldWidget(p))}if(A){g.foldWidget||(g.foldWidget=i.createElement("span"),g.element.appendChild(g.foldWidget));var m="ace_fold-widget ace_"+A;m+="start"==A&&p==s&&pi.right-t.right?"foldWidgets":void 0}}).call(s.prototype),t.Gutter=s}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t){"use strict";var i=e("../range").Range,n=e("../lib/dom"),o=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var o=n.range.clipRows(e.firstRow,e.lastRow);if(!o.isEmpty())if(o=o.toScreenRange(this.session),n.renderer){var r=this.$getTop(o.start.row,e),s=this.$padding+o.start.column*e.characterWidth;n.renderer(t,o,s,r,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,o,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,o,n.clazz,e):o.isMultiLine()?"text"==n.type?this.drawTextMarker(t,o,n.clazz,e):this.drawMultiLineMarker(t,o,n.clazz,e):this.drawSingleLineMarker(t,o,n.clazz+" ace_start",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,o,r){var s=t.start.row,a=new i(s,t.start.column,s,this.session.getScreenLastRowColumn(s));for(this.drawSingleLineMarker(e,a,n+" ace_start",o,1,r),s=t.end.row,a=new i(s,0,s,t.end.column),this.drawSingleLineMarker(e,a,n,o,0,r),s=t.start.row+1;s"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,0>s||(a=this.$getTop(t.start.row+1,n),e.push("
"))},this.drawSingleLineMarker=function(e,t,i,n,o,r){var s=n.lineHeight,a=(t.end.column+(o||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,o){var r=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-r),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,o){var r=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("../lib/oop"),n=e("../lib/dom"),o=e("../lib/lang"),r=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),s=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,r),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;return this.EOL_CHAR!=e?(this.EOL_CHAR=e,!0):void 0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;e+1>i;i++)t.push(this.showInvisibles?""+this.TAB_CHAR+o.stringRepeat(" ",i-1)+"":o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=this.TAB_CHAR+o.stringRepeat(" ",this.tabSize-1)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings[" "]=""+l+""}},this.updateLines=function(e,t,i){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),o=Math.min(i,e.lastRow),r=this.element.childNodes,s=0,a=e.firstRow;n>a;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(n)){n=l.start.row;break}a=l.end.row}s++}for(var a=n,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>o)break;var h=r[s++];if(h){var u=[];this.$renderLine(u,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=u.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var o=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(o)}},this.$renderLinesFragment=function(e,t,i){for(var o=this.element.ownerDocument.createDocumentFragment(),r=t,s=this.session.getNextFoldLine(r),a=s?s.start.row:1/0;;){if(r>a&&(r=s.end.row+1,s=this.session.getNextFoldLine(r,s),a=s?s.start.row:1/0),r>i)break;var l=n.createElement("div"),c=[];if(this.$renderLine(c,r,!1,r==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",o.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(r)+"px";else for(;l.firstChild;)o.appendChild(l.firstChild);r++}return o},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,o=i,r=this.session.getNextFoldLine(o),s=r?r.start.row:1/0;;){if(o>s&&(o=r.end.row+1,r=this.session.getNextFoldLine(o,r),s=r?r.start.row:1/0),o>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,o,!1,o==s?r:!1),this.$useLineGroups()&&t.push("
"),o++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\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]/g,a=function(e,i,n,s){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":o.stringRepeat(" ",e.length);if("&"==e)return"&";if("<"==e)return"<";if(" "==e){var a=r.session.getScreenTabSize(t+s);return t+=a-1,r.$tabStrings[a]}if(" "==e){var l=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",c=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+c+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},l=n.replace(s,a);if(this.$textToken[i.type])e.push(l);else{var c="ace_"+i.type.replace(/\./g," ace_"),h="";"fold"==i.type&&(h=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",l,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return 0>=n||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(o.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var o=0,r=0,s=i[0],a=0,l=0;l=s;)a=this.$renderToken(e,a,c,h.substring(0,s-o)),h=h.substring(s-o),o=s,n||e.push("","
"),r++,a=0,s=i[r]||Number.MAX_VALUE;0!=h.length&&(o+=h.length,a=this.$renderToken(e,a,c,h))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],o=n.value;this.displayIndentGuides&&(o=this.renderIndentGuide(e,o)),o&&(i=this.$renderToken(e,i,n,o));for(var r=1;r"),o.length){var r=this.session.getRowSplitData(t);r&&r.length?this.$renderWrappedLine(e,o,r,i):this.$renderSimpleLine(e,o)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,r=0;r+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),o.push({type:e[n].type,value:s}),r=t+s.length,n+=1}for(;i>r&&n=e)return o;if(o.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return o}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,o=0;o=t){t>a&&(a>=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,s=!1;e instanceof r?i=e:(i=new r(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(c>a||a==c&&h-2>=l))throw new Error("The range has to be at least 2 characters width");var u=this.getFoldAt(a,l,1),d=this.getFoldAt(c,h,-1);if(u&&d==u)return u.addSubFold(i);u&&!u.range.isStart(a,l)&&this.removeFold(u),d&&!d.range.isEnd(c,h)&&this.removeFold(d);var g=this.getFoldsInRange(i.range);g.length>0&&(this.removeFolds(g),g.forEach(function(e){i.addSubFold(e)}));for(var f=0;f0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,o;if(null==e?(i=new n(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new n(e,0,e,this.getLine(e).length):"row"in e?n.fromPoints(e,e):e,o=this.getFoldsInRangeList(i),t)this.removeFolds(o);else for(var r=o;r.length;)this.expandFolds(r),r=this.getFoldsInRangeList(i);return o.length?o:void 0},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,o){null==n&&(n=e.start.row),null==o&&(o=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var r=this.doc,s="";return e.walk(function(e,t,i,a){if(!(n>t)){if(t==n){if(o>i)return;a=Math.max(o,a)}s+=null!=e?e:r.getLine(t).substring(a,i)}},t,i),s},this.getDisplayLine=function(e,t,i,n){var o=this.getFoldLine(e);if(o)return this.getFoldDisplayLine(o,e,t,i,n);var r;return r=this.doc.getLine(e),r.substring(n||0,t||r.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var i=t.folds.map(function(e){return e.clone()});return new o(e,i)})},this.toggleFold=function(e){var t,i,n=this.selection,o=n.getRange();if(o.isEmpty()){var r=o.start;if(t=this.getFoldAt(r.row,r.column))return void this.expandFold(t);(i=this.findMatchingBracket(r))?1==o.comparePoint(i)?o.end=i:(o.start=i,o.start.column++,o.end.column--):(i=this.findMatchingBracket({row:r.row,column:r.column+1}))?(1==o.comparePoint(i)?o.end=i:o.start=i,o.start.column++):o=this.getCommentFoldRange(r.row,r.column)||o}else{var s=this.getFoldsInRange(o);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(o.start.row,o.start.column)),t&&t.range.toString()==o.toString())return void this.expandFold(t);var a="...";if(!o.isMultiLine()){if(a=this.getTextRange(o),a.length<4)return;a=a.trim().substring(0,2)+".."}this.addFold(a,o)},this.getCommentFoldRange=function(e,t,i){var o=new s(this,e,t),r=o.getCurrentToken();if(r&&/^comment|string/.test(r.type)){var a=new n,l=new RegExp(r.type.replace(/\..*/,"\\."));if(1!=i){do r=o.stepBackward();while(r&&l.test(r.type));o.stepForward()}if(a.start.row=o.getCurrentTokenRow(),a.start.column=o.getCurrentTokenColumn()+2,o=new s(this,e,t),-1!=i){do r=o.stepForward();while(r&&l.test(r.type));r=o.stepBackward()}else r=o.getCurrentToken();return a.end.row=o.getCurrentTokenRow(),a.end.column=o.getCurrentTokenColumn()+r.value.length-2,a}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength(),e=e||0;for(var o=e;t>o;o++)if(null==n[o]&&(n[o]=this.getFoldWidget(o)),"start"==n[o]){var r=this.getFoldWidgetRange(o);if(r&&r.isMultiLine()&&r.end.row<=t&&r.start.row>=e){o=r.end.row;try{var s=this.addFold("...",r);s&&(s.collapseChildren=i)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.removeListener("change",this.$updateFoldWidgets),this._emit("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,o=e-1;o>=0;){var r=i[o];if(null==r&&(r=i[o]=this.getFoldWidget(o)),"start"==r){var s=this.getFoldWidgetRange(o);if(n||(n=s),s&&s.end.row>=e)break}o--}return{range:-1!==o&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},n=this.$toggleFoldWidget(e,i);if(!n){var o=t.target||t.srcElement;o&&/ace_fold-widget/.test(o.className)&&(o.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),o="end"===i?-1:1,r=this.getFoldAt(e,-1===o?0:n.length,o);if(r)return void(t.children||t.all?this.removeFold(r):this.expandFold(r));var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(r=this.getFoldAt(s.start.row,s.start.column,1),r&&s.isEqual(r.range)))return void this.removeFold(r);if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,s.end.row,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(){var e=this.selection.getCursor().row;e=this.getRowFoldStart(e);var t=this.$toggleFoldWidget(e,{});if(!t){var i=this.getParentFoldRangeData(e,!0);if(t=i.range||i.firstRange){e=t.start.row;var n=this.getFoldAt(e,this.getLine(e).length,1);n?this.removeFold(n):this.addFold("...",t)}}},this.updateFoldWidgets=function(e){var t=e.data,i=t.range,n=i.start.row,o=i.end.row-n;if(0===o)this.foldWidgets[n]=null;else if("removeText"==t.action||"removeLines"==t.action)this.foldWidgets.splice(n,o+1,null);else{var r=Array(o+1);r.unshift(n,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}}}var n=e("../range").Range,o=e("./fold_line").FoldLine,r=e("./fold").Fold,s=e("../token_iterator").TokenIterator;t.Folding=i}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t){"use strict";function i(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var o=this.$brackets[e],r=1,s=new n(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end|start|begin)\b/,"")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==o){if(r-=1,0==r)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(r+=1);l-=1}do a=s.stepBackward();while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var o=this.$brackets[e],r=1,s=new n(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:end|start|begin)\b/,"")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var u=c.charAt(l);if(u==o){if(r-=1,0==r)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else u==e&&(r+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var n=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=i}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/lang"),o=e("./config"),r=e("./lib/event_emitter").EventEmitter,s=e("./selection").Selection,a=e("./mode/text").Mode,l=e("./range").Range,c=e("./document").Document,h=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,d=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),"object"==typeof e&&e.getLine||(e=new c(e)),this.setDocument(e),this.selection=new s(this),o.resetOptions(this),this.setMode(t),o._signal("session",this)};(function(){function e(e){return 4352>e?!1:e>=4352&&4447>=e||e>=4515&&4519>=e||e>=4602&&4607>=e||e>=9001&&9002>=e||e>=11904&&11929>=e||e>=11931&&12019>=e||e>=12032&&12245>=e||e>=12272&&12283>=e||e>=12288&&12350>=e||e>=12353&&12438>=e||e>=12441&&12543>=e||e>=12549&&12589>=e||e>=12593&&12686>=e||e>=12688&&12730>=e||e>=12736&&12771>=e||e>=12784&&12830>=e||e>=12832&&12871>=e||e>=12880&&13054>=e||e>=13056&&19903>=e||e>=19968&&42124>=e||e>=42128&&42182>=e||e>=43360&&43388>=e||e>=44032&&55203>=e||e>=55216&&55238>=e||e>=55243&&55291>=e||e>=63744&&64255>=e||e>=65040&&65049>=e||e>=65072&&65106>=e||e>=65108&&65126>=e||e>=65128&&65131>=e||e>=65281&&65376>=e||e>=65504&&65510>=e}i.implement(this,r),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;n>=i;){var o=i+n>>1,r=e[o];if(t>r)i=o+1;else{if(!(r>t))return o;n=o-1}}return i-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){var t=e.data;this.$modified=!0,this.$resetRowCache(t.range.start.row);var i=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||t.ignore||(this.$deltasDoc.push(t),i&&0!=i.length&&this.$deltasFold.push({action:"removeFolds",folds:i}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(t),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var i,n=this.bgTokenizer.getTokens(e),o=0;if(null==t)r=n.length-1,o=this.getLine(e).length;else for(var r=0;r=t));r++);return(i=n[r])?(i.index=r,i.start=o-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=n.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?n.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var o=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var o=/\s/;else var o=this.nonTokenRe;var r=t;if(r>0){do r--;while(r>=0&&i.charAt(r).match(o));r++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,o=0,r=this.$foldData[o],s=r?r.start.row:1/0,a=t.length,l=0;a>l;l++){if(l>s){if(l=r.end.row+1,l>=a)break;r=this.$foldData[o++],s=r?r.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var o=e[n];"doc"==o.group?(this.doc.revertDeltas(o.deltas),i=this.$getUndoSelection(o.deltas,!0,i)):o.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(r.start.column+=a),r.end.row==e.end.row&&r.end.column>e.end.column&&(r.end.column+=a)),s&&r.start.row>=e.end.row&&(r.start.row+=s,r.end.row+=s)}if(r.end=this.insert(r.start,n),o.length){var c=e.start,h=r.start,s=h.row-c.row,a=h.column-c.column;this.addFolds(o.map(function(e){return e=e.clone(),e.start.row==c.row&&(e.start.column+=a),e.end.row==c.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return r},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;t>=n;n++)this.insert({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new l(0,0,0,0),n=this.getTabSize(),o=t.start.row;o<=t.end.row;++o){var r=this.getLine(o);i.start.row=o,i.end.row=o;for(var s=0;n>s&&" "==r.charAt(s);++s);n>s&&" "==r.charAt(s)?(i.start.column=s,i.end.column=s+1):(i.start.column=0,i.end.column=s),this.remove(i)}},this.$moveLines=function(e,t,i){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),0>i){var n=this.getRowFoldStart(e+i);if(0>n)return 0;var o=n-e}else if(i>0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var o=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var o=t-e+1}var r=new l(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(r).map(function(e){return e=e.clone(),e.start.row+=o,e.end.row+=o,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+o,a),s.length&&this.addFolds(s),o},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return 0>t?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),0>e)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)&&(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1?(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t,i=this.$useWrapMode,n=e.data.action,o=e.data.range.start.row,r=e.data.range.end.row,s=e.data.range.start,a=e.data.range.end,l=null;if(-1!=n.indexOf("Lines")?(r="insertLines"==n?o+e.data.lines.length:o,t=e.data.lines?e.data.lines.length:r-o):t=r-o,this.$updating=!0,0!=t)if(-1!=n.indexOf("remove")){this[i?"$wrapData":"$rowLengthCache"].splice(o,t);var c=this.$foldData;l=this.getFoldsInRange(e.data.range),this.removeFolds(l);var h=this.getFoldLine(a.row),u=0;if(h){h.addRemoveChars(a.row,a.column,s.column-a.column),h.shiftRow(-t);var d=this.getFoldLine(o);d&&d!==h&&(d.merge(h),h=d),u=c.indexOf(h)+1}for(u;u=a.row&&h.shiftRow(-t)}r=o}else{var g=Array(t);g.unshift(o,0);var f=i?this.$wrapData:this.$rowLengthCache;f.splice.apply(f,g);var c=this.$foldData,h=this.getFoldLine(o),u=0;if(h){var p=h.range.compareInside(s.row,s.column);0==p?(h=h.split(s.row,s.column),h&&(h.shiftRow(t),h.addRemoveChars(r,0,a.column-s.column))):-1==p&&(h.addRemoveChars(o,0,a.column-s.column),h.shiftRow(t)),u=c.indexOf(h)+1}for(u;u=o&&h.shiftRow(t)}}else{t=Math.abs(e.data.range.start.column-e.data.range.end.column),-1!=n.indexOf("remove")&&(l=this.getFoldsInRange(e.data.range),this.removeFolds(l),t=-t);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,s.column,t)}return i&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,i?this.$updateWrapData(o,r):this.$updateRowLengthCache(o,r),l},this.$updateRowLengthCache=function(e,t){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,n,o=this.doc.getAllLines(),r=this.getTabSize(),s=this.$wrapData,a=this.$wrapLimit,l=e;for(t=Math.min(t,o.length-1);t>=l;)n=this.getFoldLine(l,n),n?(i=[],n.walk(function(e,t,n,r){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=c;for(var a=1;at;){var h=r+t;if(e[h-1]>=f&&e[h]>=f)i(h);else if(e[h]!=c&&e[h]!=d){for(var u=Math.max(h-(l?10:t-(t>>2)),r-1);h>u&&e[h]u&&e[h]u&&e[h]==g;)h--}else for(;h>u&&e[h]u?i(++h):(h=r+t,e[h]==s&&h--,i(h))}else{for(h;h!=r-1&&e[h]!=c;h--);if(h>r){i(h);continue}for(h=r+t;hc;c++)r.push(m)}else 32==l?r.push(f):l>39&&48>l||l>57&&64>l?r.push(g):l>=4352&&e(l)?r.push(t,s):r.push(t)}return r},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var o,r;for(r=0;r=4352&&e(o)?2:1,!(n>i));r++);return[n,r]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var i=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(i)},this.getDocumentLastRowColumnPosition=function(e,t){var i=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(i,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:void 0},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(0>e)return{row:0,column:0};var i,n,o=0,r=0,s=0,a=0,l=this.$screenRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var s=l[c],o=this.$docRowCache[c],u=e>l[h-1];else var u=!h;for(var d=this.getLength()-1,g=this.getNextFoldLine(o),f=g?g.start.row:1/0;e>=s&&(a=this.getRowLength(o),!(s+a>e||o>=d));)s+=a,o++,o>f&&(o=g.end.row+1,g=this.getNextFoldLine(o,g),f=g?g.start.row:1/0),u&&(this.$docRowCache.push(o),this.$screenRowCache.push(s));if(g&&g.start.row<=o)i=this.getFoldDisplayLine(g),o=g.start.row;else{if(e>=s+a||o>d)return{row:d,column:this.getLine(d).length};i=this.getLine(o),g=null}if(this.$useWrapMode){var p=this.$wrapData[o];if(p){var m=Math.floor(e-s);n=p[m],m>0&&p.length&&(r=p[m-1]||p[p.length-1],i=i.substring(r))}}return r+=this.$getStringScreenWidth(i,t)[1],this.$useWrapMode&&r>=n&&(r=n-1),g?g.idxToPosition(r):{row:o,column:r}},this.documentToScreenPosition=function(e,t){if("undefined"==typeof t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,o=null,r=null;r=this.getFoldAt(e,t,1),r&&(e=r.start.row,t=r.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],u=e>l[h-1];else var u=!h;for(var d=this.getNextFoldLine(a),g=d?d.start.row:1/0;e>a;){if(a>=g){if(s=d.end.row+1,s>e)break;d=this.getNextFoldLine(s,d),g=d?d.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,u&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var f="";if(d&&a>=g?(f=this.getFoldDisplayLine(d,e,t),o=d.start.row):(f=this.getLine(e).substring(0,t),o=e),this.$useWrapMode){var p=this.$wrapData[o];if(p){for(var m=0;f.length>=p[m];)n++,m++;f=f.substring(p[m-1]||0,f.length)}}return{row:n,column:this.$getStringScreenWidth(f)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,o=0,t=this.$foldData[o++],r=t?t.start.row:1/0;i>n;){var s=this.$wrapData[n];e+=s?s.length+1:1,n++,n>r&&(n=t.end.row+1,t=this.$foldData[o++],r=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,o=0;o=u;u++){for(var d=0;c>d;d++)if(-1==r[u+d].search(a[d]))continue e;var g=r[u],f=r[u+c-1],p=g.length-g.match(a[0])[0].length,m=f.match(a[c-1])[0].length;l&&l.end.row===u&&l.end.column>p||(s.push(l=new o(u,p,u+c-1,m)),c>2&&(u=u+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[d].end.column>E&&s[d].end.row==n.end.row;)d--;for(s=s.slice(v,d+1),v=0,d=s.length;d>v;v++)s[v].start.row+=n.start.row,s[v].end.row+=n.start.row}return s},this.replace=function(e,t){var i=this.$options,n=this.$assembleRegExp(i);if(i.$isMultiLine)return t;if(n){var o=n.exec(e);if(!o||o[0].length!=e.length)return null;if(t=e.replace(n,t),i.preserveCase){t=t.split("");for(var r=Math.min(e.length,e.length);r--;){var s=e[r];t[r]=s&&s.toLowerCase()!=s?t[r].toUpperCase():t[r].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var r,s=this,a=t.backwards;if(t.$isMultiLine)var l=n.length,c=function(t,i,s){var a=t.search(n[0]);if(-1!=a){for(var c=1;l>c;c++)if(t=e.getLine(i+c),-1==t.search(n[c]))return;var h=t.match(n[l-1])[0].length,u=new o(i,a,i+l-1,h);return 1==n.offset?(u.start.row--,u.start.column=Number.MAX_VALUE):s&&(u.start.column+=s),r(u)?!0:void 0}};else if(a)var c=function(e,t,o){for(var s=i.getMatchOffsets(e,n),a=s.length-1;a>=0;a--)if(r(s[a],t,o))return!0};else var c=function(e,t,o){for(var s=i.getMatchOffsets(e,n),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=r.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=r.row,o=e.getLine(n).substr(r.column);if(!i(o,n,r.column)){for(n+=1;a>=n;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=r.row;a>=n;n++)if(i(e.getLine(n),n))return}};return{forEach:l}}}).call(r.prototype),t.Search=r}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t){"use strict";function i(e,t){this.platform=t||(r.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function n(e,t){i.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),r=e("../lib/useragent"),s=o.KEY_MODS;n.prototype=i.prototype,function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var o in n){var r=n[o];if(r==e)delete n[o];else if(Array.isArray(r)){var s=r.indexOf(e);-1!=s&&(r.splice(s,1),1==r.length&&(n[o]=r[0]))}}},this.bindKey=function(e,t,i){return"object"==typeof e&&(e=e[this.platform]),e?"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var o=e.split(/\s+/);e=o.pop(),o.forEach(function(e){var t=this.parseKeys(e),i=s[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var r=this.parseKeys(e),a=s[r.hashId]+r.key;this._addCommandToBinding(n+a,t,i)},this):void 0},this._addCommandToBinding=function(e,t,i){var n,o=this.commandKeyBinding;t?!o[e]||this.$singleCommand?o[e]=t:(Array.isArray(o[e])?-1!=(n=o[e].indexOf(t))&&o[e].splice(n,1):o[e]=[o[e]],i||t.isDefault?o[e].unshift(t):o[e].push(t)):delete o[e]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=s[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){var o=s[t]+i,r=this.commandKeyBinding[o];return e.$keyChain&&(e.$keyChain+=" "+o,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&n>0&&(e.$keyChain=""),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}}.call(i.prototype),t.HashHandler=i,t.MultiHashHandler=n}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("../lib/oop"),n=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,r=function(e,t){n.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};i.inherits(r,n),function(){i.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var o={editor:t,command:e,args:i};return o.returnValue=this._emit("exec",o),this._signal("afterExec",o),o.returnValue===!1?!1:!0},this.toggleRecording=function(e){return this.$inReplay?void 0:(e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0))},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(r.prototype),t.CommandManager=r}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t){"use strict";function i(e,t){return{win:e,mac:t}}var n=e("../lib/lang"),o=e("../config"),r=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:i("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:i("Alt-E","Ctrl-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:i("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:i("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:i(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:i("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:i("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:i("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:i("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:i("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:i("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:i("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:i("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:i("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:i("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:i("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:i("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:i("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:i("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:i("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:i("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:i("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:i("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:i("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:i("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:i("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:i("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:i("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:i("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:i("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:i("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:i("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:i("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:i("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:i("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:i("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:i("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:i("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:i(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:i("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:i(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:i("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:i("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:i("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:i("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:i("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:i("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"passKeysToBrowser",bindKey:i("null","null"),exec:function(){},passEvent:!0,readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:i("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:i("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:i("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:i("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:i("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:i("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:i("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:i("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:i("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:i("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:i("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:i("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:i("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:i("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:i("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:i("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:i("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:i("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:i("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:i("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:i("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:i("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:i("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:i("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:i("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(n.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:i(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:i("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:i("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:i("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:i("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:i(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),o=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),s=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=o.row+1;h++){var u=n.stringTrimLeft(n.stringTrimRight(e.session.doc.getLine(h)));0!==u.length&&(u=" "+u),c+=u}o.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(s=e.session.doc.getLine(i.row).length>s?s+1:s,e.selection.moveCursorTo(i.row,s))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:i(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,o=[];n.length<1&&(n=[e.selection.getRange()]);for(var s=0;si?{type:e[n].type,value:s.substring(0,i-r)}:e[n]),r+=s.length,n+=1}}var n=this.session,o=[],r=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?o.push({type:"fold",value:e}):(l&&(r=n.getTokens(t)),r.length&&i(r,a,s))},t.end.row,this.session.getLine(t.end.row).length),o},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(s.prototype),t.Text=s}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t){"use strict";var i,n=e("../lib/dom"),o=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===i&&(i="opacity"in this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),n.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||i||(this.smoothBlinking=e,n.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),this.restartTimer())},this.addCursor=function(){var e=n.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,n.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,n.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&n.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){n.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e),n=this.$padding+i.column*this.config.characterWidth,o=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:n,top:o}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;(void 0===t||0===t.length)&&(t=[{cursor:null}]);for(var i=0,o=t.length;o>i;i++){var r=this.getPixelPosition(t[i].cursor,!0);if(!((r.top>e.height+e.offset||r.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;s.left=r.left+"px",s.top=r.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px"}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=r,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?n.addCssClass(this.element,"ace_overwrite-cursors"):n.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/dom"),o=e("./lib/event"),r=e("./lib/event_emitter").EventEmitter,s=function(e){this.element=n.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=n.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){i.implement(this,r),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(s.prototype);var a=function(e,t){s.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=n.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};i.inherits(a,s),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var l=function(e,t){s.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(l,s),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=l,t.VScrollBar=a,t.HScrollBar=l}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t){"use strict";var i=e("./lib/event"),n=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;i.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(n.prototype),t.RenderLoop=n}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t){var i=e("../lib/oop"),n=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/useragent"),s=e("../lib/event_emitter").EventEmitter,a=0,l=t.FontMetrics=function(e){this.el=n.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=n.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=n.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,s),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=n.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;a=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="-100px",e.visibility="hidden",e.position="fixed",e.whiteSpace="pre",r.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){if(50===a){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/a}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=o.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(l.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/dom"),o=e("./config"),r=e("./lib/useragent"),s=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,l=e("./layer/text").Text,c=e("./layer/cursor").Cursor,h=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,d=e("./renderloop").RenderLoop,g=e("./layer/font_metrics").FontMetrics,f=e("./lib/event_emitter").EventEmitter,p='.ace_editor { position: relative; overflow: hidden; font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace; direction: ltr; } .ace_scroller { position: absolute; overflow: hidden; top: 0; bottom: 0; background-color: inherit; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; cursor: text; } .ace_content { position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; min-width: 100%; } .ace_dragging .ace_scroller:before{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; content: \'\'; background: rgba(250, 250, 250, 0.01); z-index: 1000; } .ace_dragging.ace_dark .ace_scroller:before{ background: rgba(0, 0, 0, 0.01); } .ace_selecting, .ace_selecting * { cursor: text !important; } .ace_gutter { position: absolute; overflow : hidden; width: auto; top: 0; bottom: 0; left: 0; cursor: default; z-index: 4; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; } .ace_gutter-active-line { position: absolute; left: 0; right: 0; } .ace_scroller.ace_scroll-left { box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; } .ace_gutter-cell { padding-left: 19px; padding-right: 6px; background-repeat: no-repeat; } .ace_gutter-cell.ace_error { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: 2px center; } .ace_gutter-cell.ace_warning { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); background-position: 2px center; } .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); background-position: 2px center; } .ace_dark .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); } .ace_scrollbar { position: absolute; right: 0; bottom: 0; z-index: 6; } .ace_scrollbar-inner { position: absolute; cursor: text; left: 0; top: 0; } .ace_scrollbar-v{ overflow-x: hidden; overflow-y: scroll; top: 0; } .ace_scrollbar-h { overflow-x: scroll; overflow-y: hidden; left: 0; } .ace_print-margin { position: absolute; height: 100%; } .ace_text-input { position: absolute; z-index: 0; width: 0.5em; height: 1em; opacity: 0; background: transparent; -moz-appearance: none; appearance: none; border: none; resize: none; outline: none; overflow: hidden; font: inherit; padding: 0 1px; margin: 0 -1px; text-indent: -1em; -ms-user-select: text; -moz-user-select: text; -webkit-user-select: text; user-select: text; } .ace_text-input.ace_composition { background: inherit; color: inherit; z-index: 1000; opacity: 1; text-indent: 0; } .ace_layer { z-index: 1; position: absolute; overflow: hidden; white-space: pre; height: 100%; width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; pointer-events: none; } .ace_gutter-layer { position: relative; width: auto; text-align: right; pointer-events: auto; } .ace_text-layer { font: inherit !important; } .ace_cjk { display: inline-block; text-align: center; } .ace_cursor-layer { z-index: 4; } .ace_cursor { z-index: 4; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; border-left: 2px solid } .ace_slim-cursors .ace_cursor { border-left-width: 1px; } .ace_overwrite-cursors .ace_cursor { border-left-width: 0; border-bottom: 1px solid; } .ace_hidden-cursors .ace_cursor { opacity: 0.2; } .ace_smooth-blinking .ace_cursor { -webkit-transition: opacity 0.18s; transition: opacity 0.18s; } .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { position: absolute; z-index: 3; } .ace_marker-layer .ace_selection { position: absolute; z-index: 5; } .ace_marker-layer .ace_bracket { position: absolute; z-index: 6; } .ace_marker-layer .ace_active-line { position: absolute; z-index: 2; } .ace_marker-layer .ace_selected-word { position: absolute; z-index: 4; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: 11px; margin-top: -2px; vertical-align: middle; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); background-repeat: no-repeat, repeat-x; background-position: center center, top left; color: transparent; border: 1px solid black; border-radius: 2px; cursor: pointer; pointer-events: auto; } .ace_dark .ace_fold { } .ace_fold:hover{ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); } .ace_tooltip { background-color: #FFF; background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); border: 1px solid gray; border-radius: 1px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); color: black; max-width: 100%; padding: 3px 4px; position: fixed; z-index: 999999; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; cursor: default; white-space: pre; word-wrap: break-word; line-height: normal; font-style: normal; font-weight: normal; letter-spacing: normal; pointer-events: none; } .ace_folding-enabled > .ace_gutter-cell { padding-right: 13px; } .ace_fold-widget { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0 -12px 0 1px; display: none; width: 11px; vertical-align: top; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: center; border-radius: 3px; border: 1px solid transparent; cursor: pointer; } .ace_folding-enabled .ace_fold-widget { display: inline-block; } .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); } .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); } .ace_fold-widget:hover { border: 1px solid rgba(0, 0, 0, 0.3); background-color: rgba(255, 255, 255, 0.2); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); } .ace_fold-widget:active { border: 1px solid rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); } .ace_dark .ace_fold-widget { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); } .ace_dark .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget:hover { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); background-color: rgba(255, 255, 255, 0.1); } .ace_dark .ace_fold-widget:active { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); } .ace_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; } .ace_fade-fold-widgets .ace_fold-widget { -webkit-transition: opacity 0.4s ease 0.05s; transition: opacity 0.4s ease 0.05s; opacity: 0; } .ace_fade-fold-widgets:hover .ace_fold-widget { -webkit-transition: opacity 0.05s ease 0.05s; transition: opacity 0.05s ease 0.05s; opacity:1; } .ace_underline { text-decoration: underline; } .ace_bold { font-weight: bold; } .ace_nobold .ace_bold { font-weight: normal; } .ace_italic { font-style: italic; } .ace_error-marker { background-color: rgba(255, 0, 0,0.2); position: absolute; z-index: 9; } .ace_highlight-marker { background-color: rgba(255, 255, 0,0.2); position: absolute; z-index: 8; } ';n.importCssString(p,"ace_editor");var m=function(e,t){var i=this;this.container=e||n.createElement("div"),this.$keepTextAreaAtCursor=!r.isOldIE,n.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=n.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=n.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=n.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new s(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var f=this.$textLayer=new l(this.content);this.canvas=f.element,this.$markerFront=new a(this.content),this.$cursorLayer=new c(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new h(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new g(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new d(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,f),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var o=this.container;n||(n=o.clientHeight||o.scrollHeight),i||(i=o.clientWidth||o.scrollWidth);var r=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(r|this.$changes,!0):this.$loop.schedule(r|this.$changes),this.resizing&&(this.resizing=0)}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var o=0,r=this.$size,s={width:r.width,height:r.height,scrollerHeight:r.scrollerHeight,scrollerWidth:r.scrollerWidth};return n&&(e||r.height!=n)&&(r.height=n,o|=this.CHANGE_SIZE,r.scrollerHeight=r.height,this.$horizScroll&&(r.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",o|=this.CHANGE_SCROLL),i&&(e||r.width!=i)&&(o|=this.CHANGE_SIZE,r.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",r.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(o|=this.CHANGE_FULL)),r.$dirty=!i||!n,o&&this._signal("resize",s),o},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=n.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=n.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.lineHeight;if(!(0>t||t>e.height-n)){var o=this.characterWidth;if(this.$composition){var r=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(r)[0]+2,n+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,this.textarea.style.height=n+"px",this.textarea.style.width=o+"px",this.textarea.style.left=Math.min(i,this.$size.scrollerWidth-o)+"px",this.textarea.style.top=Math.min(t,this.$size.height-n)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var o=this.scrollMargin;o.top=0|e,o.bottom=0|t,o.right=0|n,o.left=0|i,o.v=o.top+o.bottom,o.h=o.left+o.right,o.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-o.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){ +this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var o=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,o,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),o=n*this.lineHeight,r=this.scrollTop%this.lineHeight,s=t.scrollerHeight+this.lineHeight,a=this.$getLongestLine(),l=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-a-2*this.$padding<0),c=this.$horizScroll!==l;c&&(this.$horizScroll=l,this.scrollBarH.setVisible(l));var h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;o+=h,this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,o-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,a+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var u=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-o+h<0||this.scrollTop),d=this.$vScroll!==u;d&&(this.$vScroll=u,this.scrollBarV.setVisible(u));var g,f,p=Math.ceil(s/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-r)/this.lineHeight)),v=m+p,A=this.lineHeight;m=e.screenToDocumentRow(m,0);var w=e.getFoldLine(m);w&&(m=w.start.row),g=e.documentToScreenRow(m,0),f=e.getRowLength(m)*A,v=Math.min(e.screenToDocumentRow(v,0),e.getLength()-1),s=t.scrollerHeight+e.getRowLength(v)*A+f,r=this.scrollTop-g*A;var C=0;return this.layerConfig.width!=a&&(C=this.CHANGE_H_SCROLL),(c||d)&&(C=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(a=this.$getLongestLine())),this.layerConfig={width:a,padding:this.$padding,firstRow:m,firstRowScreen:g,lastRow:v,lineHeight:A,characterWidth:this.characterWidth,minHeight:s,maxHeight:o,offset:r,gutterOffset:Math.max(0,Math.ceil((r+t.height-t.scrollerHeight)/A)),height:this.$size.scrollerHeight},C},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;return e>i.lastRow+1||tr?(t&&(r-=t*this.$size.scrollerHeight),0===r&&(r=-this.scrollMargin.top),this.session.setScrollTop(r)):l+this.$size.scrollerHeight-ao?(oi;++i)o.push(r(i/this.STEPS,e,t-e));return o},this.scrollToLine=function(e,t,i,n){var o=this.$cursorLayer.getPixelPosition({row:e,column:0}),r=o.top;t&&(r-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(r),i!==!1&&this.animateScrolling(s,n)},this.animateScrolling=function(e,t){var i=this.scrollTop;if(this.$animatedScroll){var n=this;if(e!=i){if(this.$scrollAnimation){var o=this.$scrollAnimation.steps;if(o.length&&(e=o[0],e==i))return}var r=n.$calcSteps(e,i);this.$scrollAnimation={from:e,to:i,steps:r},clearInterval(this.$timer),n.session.setScrollTop(r.shift()),n.session.$scrollTop=i,this.$timer=setInterval(function(){r.length?(n.session.setScrollTop(r.shift()),n.session.$scrollTop=i):null!=i?(n.session.$scrollTop=-1,n.session.setScrollTop(i),i=null):(n.$timer=clearInterval(n.$timer),n.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return 0>t&&this.session.getScrollTop()>=1-this.scrollMargin.top?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom?!0:0>e&&this.session.getScrollLeft()>=1-this.scrollMargin.left?!0:e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right?!0:void 0},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,o=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),r=Math.round(n);return{row:o,column:r,side:n-r>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),o=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(o,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),o=this.$padding+Math.round(n.column*this.characterWidth),r=n.row*this.lineHeight;return{pageX:i.left+o-this.scrollLeft,pageY:i.top+r-this.scrollTop}},this.visualizeFocus=function(){n.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){n.removeCssClass(this.container,"ace_focus")},this.showComposition=function(){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,n.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(n.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(r.$themeId!=e)return t&&t();if(i.cssClass){n.importCssString(i.cssText,i.cssClass,r.container.ownerDocument),r.theme&&n.removeCssClass(r.container,r.theme.cssClass);var o="padding"in i?i.padding:"padding"in(r.theme||{})?4:r.$padding;r.$padding&&o!=r.$padding&&r.setPadding(o),r.$theme=i.cssClass,r.theme=i,n.addCssClass(r.container,i.cssClass),n.setCssClass(r.container,"ace_dark",i.isDark),r.$size&&(r.$size.width=0,r.$updateSizeAsync()),r._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var r=this;if(this.$themeId=e,r._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){n.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){n.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),o.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){n.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=e?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=n.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(){this.updateFull()}},minLines:{set:function(){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t){"use strict";var n=e("../lib/oop"),o=e("../lib/net"),r=e("../lib/event_emitter").EventEmitter,s=e("../config"),a=function(t,n,o,r){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),s.get("packaged")||!e.toUrl)r=r||s.moduleUrl(n.id,"worker");else{var a=this.$normalizePath;r=r||a(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=a(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(19),u=new h([c],{type:"application/javascript"}),d=(window.URL||window.webkitURL).createObjectURL(u);this.$worker=new Worker(d)}catch(g){if(!(g instanceof window.DOMException))throw g;var u=this.$workerBlob(r),f=window.URL||window.webkitURL,p=f.createObjectURL(u);this.$worker=new Worker(p),f.revokeObjectURL(p)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:o}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){n.implement(this,r),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(i){console.error(i.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new n;return r.append(t),r.getBlob("application/javascript")}}}).call(a.prototype);var l=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,o=!1,a=Object.create(r),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(o?setTimeout(c):c())},this.setEmitSync=function(e){o=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&a._signal(e.event,e.data)};a.postMessage=function(e){l.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){for(n=new e[i](a);l.messageBuffer.length;)c()})};l.prototype=a.prototype,t.UIWorkerClient=l,t.WorkerClient=a}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t){"use strict";var i=e("./range").Range,n=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),r=function(e,t,i,n,o,r){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=o,this.othersClass=r,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,n),this.setup=function(){var e=this,t=this.doc,n=this.session,o=this.$pos;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(o.row,o.column),this.markerId=n.addMarker(new i(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new i(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);e.others.push(n)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(o){e.removeMarker(n.markerId),n.markerId=e.addMarker(new i(o.value.row,o.value.column,o.value.row,o.value.column+t.length),t.othersClass,null,!1)})})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var r=n.start.column-this.pos.column;if(this.length+=o,!this.session.$fromUndo){if("insertText"===t.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};a.row===n.start.row&&n.start.column=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};a.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;ei;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}).call(r.prototype),t.PlaceHolder=r}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t){function i(e,t){return e.row==t.row&&e.column==t.column}function n(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&r.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!n&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,u=e.editor,d=u.selection,g=u.inMultiSelectMode,f=e.getDocumentPosition(),p=d.getCursor(),m=e.inSelection()||d.isEmpty()&&i(f,p),v=e.x,A=e.y,w=function(e){v=e.clientX,A=e.clientY},C=u.session,E=u.renderer.pixelToScreenCoordinates(v,A),F=E;if(u.$mouseHandler.$enableJumpToDef)a&&n||l&&n?h="add":n&&(h="block");else if(l&&!n){if(h="add",!g&&s)return}else n&&(h="block");if(h&&r.isMac&&t.ctrlKey&&u.$mouseHandler.cancelContextMenu(),"add"==h){if(!g&&m)return;if(!g){var y=d.toOrientedRange();u.addSelectionMarker(y)}var b=d.rangeList.rangeAtPoint(f);u.$blockScrolling++,u.inVirtualSelectionMode=!0,s&&(b=null,y=d.ranges[0],u.removeSelectionMarker(y)),u.once("mouseup",function(){var e=d.toOrientedRange();b&&e.isEmpty()&&i(b.cursor,e.cursor)?d.substractPoint(e.cursor):(s?d.substractPoint(y.cursor):y&&(u.removeSelectionMarker(y),d.addRange(y)),d.addRange(e)),u.$blockScrolling--,u.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),u.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=u.renderer.pixelToScreenCoordinates(v,A),t=C.screenToDocumentPosition(e.row,e.column);i(F,e)&&i(t,d.lead)||(F=e,u.selection.moveToPosition(t),u.renderer.scrollCursorIntoView(),u.removeSelectionMarkers(S),S=d.rectangularRangeBlock(F,E),u.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=u.$mouseHandler.$clickSelection.clone()),S.forEach(u.addSelectionMarker,u),u.updateSelectionMarkers())};g&&!l?d.toSingleRange():!g&&l&&(x=d.toOrientedRange(),u.addSelectionMarker(x)),s?E=C.documentToScreenPosition(d.lead):d.moveToPosition(f),F={row:-1,column:-1};var B=function(){clearInterval(k),u.removeSelectionMarkers(S),S.length||(S=[d.toOrientedRange()]),u.$blockScrolling++,x&&(u.removeSelectionMarker(x),d.toSingleRange(x));for(var e=0;e1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);return t?(this.$onRemoveRange(t),t[0]):void 0},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new s,this.ranges=[],this.rangeCount=0); -var t=this.curOp.command;if(t&&t.scrollIntoView){switch(t.scrollIntoView){case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),n=this.renderer.layerConfig;(i.start.row>=n.lastRow||i.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==t.scrollIntoView&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var o=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(o)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;m.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.removeEventListener("changeCursor",this.$onCursorChange),i.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||n.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new d(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new v(e.session,i.row,i.column),o=n.getCurrentToken();if(!o||-1===o.type.indexOf("tag-name"))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var r=o.value,s=0,a=n.stepBackward();if("<"==a.value){do a=o,o=n.stepForward(),o&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"=0)}else{do o=a,a=n.stepBackward(),o&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"=s);n.stepForward()}if(!o)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=n.getCurrentTokenRow(),c=n.getCurrentTokenColumn(),h=new d(l,c,l,c+o.value.length);t.$tagHighlight&&0!==h.compareRange(t.$backMarkers[t.$tagHighlight].range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),h&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(h,"ace_bracket","text"))}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t,i=e.data,n=i.range;t=n.start.row==n.end.row&&"insertLines"!=i.action&&"removeLines"!=i.action?n.end.row:1/0,this.renderer.updateLines(n.start.row,t,this.session.$useWrapMode),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new d(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(){var e=this.session;if(e.$selectionMarker&&e.removeMarker(e.$selectionMarker),e.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var t=this.selection.getRange(),i=this.getSelectionStyle();e.$selectionMarker=e.addMarker(t,"ace_selection",i)}var n=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(n),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,o=e.getLine(t.start.row),r=o.length,s=o.substring(Math.max(i,0),Math.min(n,r));if(!(i>=0&&/^[\w\d]/.test(s)||r>=n&&/[\w\d]$/.test(s))&&(s=o.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s});return a}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(!this.$readOnly){var t={text:e};this._signal("paste",t),this.insert(t.text,!0)}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),o=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var r=n.transformAction(i.getState(o.row),"insertion",this,i,e);r&&(e!==r.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=r.text)}if(" "==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new d.fromPoints(o,o);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();o=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(o.row);if(o.column>a.search(/\S|$/)){var l=a.substr(o.column).search(/\S|$/);i.doc.removeInLine(o.row,o.column,o.column+l)}}this.clearSelection();{var c=o.column,h=i.getState(o.row),a=i.getLine(o.row),u=n.checkOutdent(h,a,e);i.insert(o,e)}if(r&&r.selection&&this.selection.setSelectionRange(2==r.selection.length?new d(o.row,c+r.selection[0],o.row,c+r.selection[1]):new d(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3])),i.getDocument().isNewLine(e)){var g=n.getNextLineIndent(h,a.slice(0,o.column),i.getTabString());i.insert({row:o.row+1,column:0},g)}u&&n.autoOutdent(h,i,o.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),o=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var r=i.getTextRange(t);if("\n"==r[r.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}o&&(t=o)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,o=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new d(0,0,0,0),o=e.first;o<=e.last;o++){var r=t.getLine(o);n.start.row=o,n.end.row=o,n.end.column=r.length,t.replace(n,i[o-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){var r={value:o[0],start:o.index,end:o.index+o[0].length};return r}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new d(t,i-1,t,i),o=this.session.getTextRange(n);if(!isNaN(parseFloat(o))&&isFinite(o)){var r=this.getNumberAt(t,i);if(r){var s=r.value.indexOf(".")>=0?r.start+r.value.indexOf(".")+1:r.end,a=r.start+r.value.length-s,l=parseFloat(r.value);l*=Math.pow(10,a),e*=s!==r.end&&s>i?Math.pow(10,r.end-i-1):Math.pow(10,r.end-i),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),h=new d(t,r.start,t,r.end);this.session.replace(h,c),this.moveCursorTo(t,Math.max(r.start+1,i+c.length-r.value.length))}}},this.removeLines=function(){var e,t=this.$getSelectedRows();e=0===t.first||t.last+1=s;)r[a].moveBy(o,0),a--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,o=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(o,0)}):t===!1&&(this.selection.moveCursorBy(o,0),this.selection.clearSelection()),this.$blockScrolling--;var r=i.scrollTop;i.scrollBy(0,o*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(r)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new v(this.session,i.row,i.column),o=n.getCurrentToken(),r=o||n.stepForward();if(r){var s,a,l=!1,c={},h=i.column-r.start,u={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(r.value.match(/[{}()\[\]]/g)){for(;h=0;--r)this.$tryReplace(i[r],e)&&n++;return this.selection.setSelectionRange(o),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&i.mixin(t,e);var o=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(o)||this.$search.$options.needle,e||(o=this.session.getWordRange(o.start.row,o.start.column),e=this.session.getTextRange(o)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:o});var r=this.$search.find(this.session);return t.preventScroll?r:r?(this.revealRange(r,n),r):(t.backwards?o.start=o.end:o.end=o.start,void this.selection.setRange(o))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var o=this.$scrollAnchor;o.style.cssText="position:absolute",this.container.insertBefore(o,this.container.firstChild);var r=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,r=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=r.top-s.offset;n=r.top>=0&&a+t.top<0?!0:r.topwindow.innerHeight?!1:null,null!=n&&(o.style.top=a+"px",o.style.left=r.left+"px",o.style.height=s.lineHeight+"px",o.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",r),this.renderer.removeEventListener("afterRender",a),this.renderer.removeEventListener("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,n.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(A.prototype),m.defineOptions(A.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"], -initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=A}),ace.define("ace/undomanager",["require","exports","module"],function(e,t){"use strict";var i=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=0/0),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),i=null;return t&&(i=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),i},this.redo=function(e){var t=this.$redoStack.pop(),i=null;return t&&(i=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),i},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter}}).call(i.prototype),t.UndoManager=i}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("../lib/dom"),n=e("../lib/oop"),o=e("../lib/lang"),r=e("../lib/event_emitter").EventEmitter,s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){n.implement(this,r),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(p=r.end.row+1,r=t.getNextFoldLine(p,r),s=r?r.start.row:1/0),p>o){for(;this.$cells.length>f+1;)g=this.$cells.pop(),this.element.removeChild(g.element);break}g=this.$cells[++f],g||(g={element:null,textNode:null,foldWidget:null},g.element=i.createElement("div"),g.textNode=document.createTextNode(""),g.element.appendChild(g.textNode),this.element.appendChild(g.element),this.$cells[f]=g);var m="ace_gutter-cell ";l[p]&&(m+=l[p]),c[p]&&(m+=c[p]),this.$annotations[p]&&(m+=this.$annotations[p].className),g.element.className!=m&&(g.element.className=m);var v=t.getRowLength(p)*e.lineHeight+"px";if(v!=g.element.style.height&&(g.element.style.height=v),a){var A=a[p];null==A&&(A=a[p]=t.getFoldWidget(p))}if(A){g.foldWidget||(g.foldWidget=i.createElement("span"),g.element.appendChild(g.foldWidget));var m="ace_fold-widget ace_"+A;m+="start"==A&&p==s&&pi.right-t.right?"foldWidgets":void 0}}).call(s.prototype),t.Gutter=s}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t){"use strict";var i=e("../range").Range,n=e("../lib/dom"),o=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var o=n.range.clipRows(e.firstRow,e.lastRow);if(!o.isEmpty())if(o=o.toScreenRange(this.session),n.renderer){var r=this.$getTop(o.start.row,e),s=this.$padding+o.start.column*e.characterWidth;n.renderer(t,o,s,r,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,o,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,o,n.clazz,e):o.isMultiLine()?"text"==n.type?this.drawTextMarker(t,o,n.clazz,e):this.drawMultiLineMarker(t,o,n.clazz,e):this.drawSingleLineMarker(t,o,n.clazz+" ace_start",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,o,r){var s=t.start.row,a=new i(s,t.start.column,s,this.session.getScreenLastRowColumn(s));for(this.drawSingleLineMarker(e,a,n+" ace_start",o,1,r),s=t.end.row,a=new i(s,0,s,t.end.column),this.drawSingleLineMarker(e,a,n,o,0,r),s=t.start.row+1;s"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,0>s||(a=this.$getTop(t.start.row+1,n),e.push("
"))},this.drawSingleLineMarker=function(e,t,i,n,o,r){var s=n.lineHeight,a=(t.end.column+(o||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,o){var r=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-r),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,o){var r=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("../lib/oop"),n=e("../lib/dom"),o=e("../lib/lang"),r=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),s=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,r),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;return this.EOL_CHAR!=e?(this.EOL_CHAR=e,!0):void 0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;e+1>i;i++)t.push(this.showInvisibles?""+this.TAB_CHAR+o.stringRepeat(" ",i-1)+"":o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=this.TAB_CHAR+o.stringRepeat(" ",this.tabSize-1)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings[" "]=""+l+""}},this.updateLines=function(e,t,i){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),o=Math.min(i,e.lastRow),r=this.element.childNodes,s=0,a=e.firstRow;n>a;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(n)){n=l.start.row;break}a=l.end.row}s++}for(var a=n,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>o)break;var h=r[s++];if(h){var u=[];this.$renderLine(u,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=u.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var o=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(o)}},this.$renderLinesFragment=function(e,t,i){for(var o=this.element.ownerDocument.createDocumentFragment(),r=t,s=this.session.getNextFoldLine(r),a=s?s.start.row:1/0;;){if(r>a&&(r=s.end.row+1,s=this.session.getNextFoldLine(r,s),a=s?s.start.row:1/0),r>i)break;var l=n.createElement("div"),c=[];if(this.$renderLine(c,r,!1,r==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",o.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(r)+"px";else for(;l.firstChild;)o.appendChild(l.firstChild);r++}return o},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,o=i,r=this.session.getNextFoldLine(o),s=r?r.start.row:1/0;;){if(o>s&&(o=r.end.row+1,r=this.session.getNextFoldLine(o,r),s=r?r.start.row:1/0),o>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,o,!1,o==s?r:!1),this.$useLineGroups()&&t.push("
"),o++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\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]/g,a=function(e,i,n,s){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":o.stringRepeat(" ",e.length);if("&"==e)return"&";if("<"==e)return"<";if(" "==e){var a=r.session.getScreenTabSize(t+s);return t+=a-1,r.$tabStrings[a]}if(" "==e){var l=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",c=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+c+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},l=n.replace(s,a);if(this.$textToken[i.type])e.push(l);else{var c="ace_"+i.type.replace(/\./g," ace_"),h="";"fold"==i.type&&(h=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",l,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return 0>=n||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(o.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var o=0,r=0,s=i[0],a=0,l=0;l=s;)a=this.$renderToken(e,a,c,h.substring(0,s-o)),h=h.substring(s-o),o=s,n||e.push("","
"),r++,a=0,s=i[r]||Number.MAX_VALUE;0!=h.length&&(o+=h.length,a=this.$renderToken(e,a,c,h))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],o=n.value;this.displayIndentGuides&&(o=this.renderIndentGuide(e,o)),o&&(i=this.$renderToken(e,i,n,o));for(var r=1;r"),o.length){var r=this.session.getRowSplitData(t);r&&r.length?this.$renderWrappedLine(e,o,r,i):this.$renderSimpleLine(e,o)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,r=0;r+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),o.push({type:e[n].type,value:s}),r=t+s.length,n+=1}for(;i>r&&ni?{type:e[n].type,value:s.substring(0,i-r)}:e[n]),r+=s.length,n+=1}}var n=this.session,o=[],r=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?o.push({type:"fold",value:e}):(l&&(r=n.getTokens(t)),r.length&&i(r,a,s))},t.end.row,this.session.getLine(t.end.row).length),o},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(s.prototype),t.Text=s}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t){"use strict";var i,n=e("../lib/dom"),o=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===i&&(i="opacity"in this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),n.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||i||(this.smoothBlinking=e,n.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),this.restartTimer())},this.addCursor=function(){var e=n.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,n.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,n.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&n.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){n.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e),n=this.$padding+i.column*this.config.characterWidth,o=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:n,top:o}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;(void 0===t||0===t.length)&&(t=[{cursor:null}]);for(var i=0,o=t.length;o>i;i++){var r=this.getPixelPosition(t[i].cursor,!0);if(!((r.top>e.height+e.offset||r.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;s.left=r.left+"px",s.top=r.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px"}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=r,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?n.addCssClass(this.element,"ace_overwrite-cursors"):n.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/dom"),o=e("./lib/event"),r=e("./lib/event_emitter").EventEmitter,s=function(e){this.element=n.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=n.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){i.implement(this,r),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(s.prototype);var a=function(e,t){s.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=n.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};i.inherits(a,s),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var l=function(e,t){s.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(l,s),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=l,t.VScrollBar=a,t.HScrollBar=l}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t){"use strict";var i=e("./lib/event"),n=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;i.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(n.prototype),t.RenderLoop=n}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t){var i=e("../lib/oop"),n=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/useragent"),s=e("../lib/event_emitter").EventEmitter,a=0,l=t.FontMetrics=function(e){this.el=n.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=n.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=n.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,s),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=n.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;a=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="-100px",e.visibility="hidden",e.position="fixed",e.whiteSpace="pre",r.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){if(50===a){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/a}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=o.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(l.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t){"use strict";var i=e("./lib/oop"),n=e("./lib/dom"),o=e("./config"),r=e("./lib/useragent"),s=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,l=e("./layer/text").Text,c=e("./layer/cursor").Cursor,h=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,d=e("./renderloop").RenderLoop,g=e("./layer/font_metrics").FontMetrics,f=e("./lib/event_emitter").EventEmitter,p='.ace_editor { position: relative; overflow: hidden; font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace; direction: ltr; } .ace_scroller { position: absolute; overflow: hidden; top: 0; bottom: 0; background-color: inherit; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; cursor: text; } .ace_content { position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; min-width: 100%; } .ace_dragging .ace_scroller:before{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; content: \'\'; background: rgba(250, 250, 250, 0.01); z-index: 1000; } .ace_dragging.ace_dark .ace_scroller:before{ background: rgba(0, 0, 0, 0.01); } .ace_selecting, .ace_selecting * { cursor: text !important; } .ace_gutter { position: absolute; overflow : hidden; width: auto; top: 0; bottom: 0; left: 0; cursor: default; z-index: 4; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; } .ace_gutter-active-line { position: absolute; left: 0; right: 0; } .ace_scroller.ace_scroll-left { box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; } .ace_gutter-cell { padding-left: 19px; padding-right: 6px; background-repeat: no-repeat; } .ace_gutter-cell.ace_error { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: 2px center; } .ace_gutter-cell.ace_warning { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); background-position: 2px center; } .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); background-position: 2px center; } .ace_dark .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); } .ace_scrollbar { position: absolute; right: 0; bottom: 0; z-index: 6; } .ace_scrollbar-inner { position: absolute; cursor: text; left: 0; top: 0; } .ace_scrollbar-v{ overflow-x: hidden; overflow-y: scroll; top: 0; } .ace_scrollbar-h { overflow-x: scroll; overflow-y: hidden; left: 0; } .ace_print-margin { position: absolute; height: 100%; } .ace_text-input { position: absolute; z-index: 0; width: 0.5em; height: 1em; opacity: 0; background: transparent; -moz-appearance: none; appearance: none; border: none; resize: none; outline: none; overflow: hidden; font: inherit; padding: 0 1px; margin: 0 -1px; text-indent: -1em; -ms-user-select: text; -moz-user-select: text; -webkit-user-select: text; user-select: text; } .ace_text-input.ace_composition { background: inherit; color: inherit; z-index: 1000; opacity: 1; text-indent: 0; } .ace_layer { z-index: 1; position: absolute; overflow: hidden; white-space: pre; height: 100%; width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; pointer-events: none; } .ace_gutter-layer { position: relative; width: auto; text-align: right; pointer-events: auto; } .ace_text-layer { font: inherit !important; } .ace_cjk { display: inline-block; text-align: center; } .ace_cursor-layer { z-index: 4; } .ace_cursor { z-index: 4; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; border-left: 2px solid } .ace_slim-cursors .ace_cursor { border-left-width: 1px; } .ace_overwrite-cursors .ace_cursor { border-left-width: 0; border-bottom: 1px solid; } .ace_hidden-cursors .ace_cursor { opacity: 0.2; } .ace_smooth-blinking .ace_cursor { -webkit-transition: opacity 0.18s; transition: opacity 0.18s; } .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { position: absolute; z-index: 3; } .ace_marker-layer .ace_selection { position: absolute; z-index: 5; } .ace_marker-layer .ace_bracket { position: absolute; z-index: 6; } .ace_marker-layer .ace_active-line { position: absolute; z-index: 2; } .ace_marker-layer .ace_selected-word { position: absolute; z-index: 4; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: 11px; margin-top: -2px; vertical-align: middle; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); background-repeat: no-repeat, repeat-x; background-position: center center, top left; color: transparent; border: 1px solid black; border-radius: 2px; cursor: pointer; pointer-events: auto; } .ace_dark .ace_fold { } .ace_fold:hover{ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); } .ace_tooltip { background-color: #FFF; background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); border: 1px solid gray; border-radius: 1px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); color: black; max-width: 100%; padding: 3px 4px; position: fixed; z-index: 999999; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; cursor: default; white-space: pre; word-wrap: break-word; line-height: normal; font-style: normal; font-weight: normal; letter-spacing: normal; pointer-events: none; } .ace_folding-enabled > .ace_gutter-cell { padding-right: 13px; } .ace_fold-widget { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0 -12px 0 1px; display: none; width: 11px; vertical-align: top; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: center; border-radius: 3px; border: 1px solid transparent; cursor: pointer; } .ace_folding-enabled .ace_fold-widget { display: inline-block; } .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); } .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); } .ace_fold-widget:hover { border: 1px solid rgba(0, 0, 0, 0.3); background-color: rgba(255, 255, 255, 0.2); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); } .ace_fold-widget:active { border: 1px solid rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); } .ace_dark .ace_fold-widget { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); } .ace_dark .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget:hover { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); background-color: rgba(255, 255, 255, 0.1); } .ace_dark .ace_fold-widget:active { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); } .ace_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; } .ace_fade-fold-widgets .ace_fold-widget { -webkit-transition: opacity 0.4s ease 0.05s; transition: opacity 0.4s ease 0.05s; opacity: 0; } .ace_fade-fold-widgets:hover .ace_fold-widget { -webkit-transition: opacity 0.05s ease 0.05s; transition: opacity 0.05s ease 0.05s; opacity:1; } .ace_underline { text-decoration: underline; } .ace_bold { font-weight: bold; } .ace_nobold .ace_bold { font-weight: normal; } .ace_italic { font-style: italic; } .ace_error-marker { background-color: rgba(255, 0, 0,0.2); position: absolute; z-index: 9; } .ace_highlight-marker { background-color: rgba(255, 255, 0,0.2); position: absolute; z-index: 8; } '; +},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=a.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),o=i.start.row,r=i.end.row;if(o==r){if(n)var s=i.end,l=i.start;else var s=i.start,l=i.end;return this.addRange(a.fromPoints(l,l)),void this.addRange(a.fromPoints(s,s))}var c=[],h=this.getLineRange(o,!0);h.start.column=i.start.column,c.push(h);for(var u=o+1;r>u;u++)c.push(this.getLineRange(u,!0));h=this.getLineRange(r,!0),h.end.column=i.end.column,c.push(h),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=a.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),o=this.session.documentToScreenPosition(this.selectionAnchor),r=this.rectangularRangeBlock(n,o);r.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var o=[],r=e.columns&&(s=0),0>h&&(h=0),h==u&&(i=!0);for(var d=h;u>=d;d++){var g=a.fromPoints(this.session.screenToDocumentPosition(d,s),this.session.screenToDocumentPosition(d,l));if(g.isEmpty()){if(f&&n(g.end,f))break;var f=g.end}g.cursor=r?g.start:g.end,o.push(g)}if(c&&o.reverse(),!i){for(var p=o.length-1;o[p].isEmpty()&&p>0;)p--;if(p>0)for(var m=0;o[m].isEmpty();)m++;for(var v=p;v>=m;v--)o[v].isEmpty()&&o.splice(v,1)}return o}}.call(l.prototype);var m=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var o=t.indexOf(n);-1!=o&&t.splice(o,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(d.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(d.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,o=i&&i.keepOrder,r=1==i||i&&i.$byLines,s=this.session,a=this.selection,c=a.rangeList,h=(o?a:c).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var u=a._eventRegistry;a._eventRegistry={};var d=new l(s);this.inVirtualSelectionMode=!0;for(var g=h.length;g--;){if(r)for(;g>0&&h[g].start.row==h[g-1].end.row;)g--;d.fromOrientedRange(h[g]),d.index=g,this.selection=s.selection=d;var f=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===f||(n=f),d.toOrientedRange(h[g])}d.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=u,a.mergeOverlappingRanges();var p=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),p&&p.from==p.to&&this.renderer.animateScrolling(p.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;nn.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,e);for(var o=n.length;o--;){var r=n[o];r.isEmpty()||this.session.remove(r),this.session.insert(r.start,i[o])}}},this.findAll=function(e,t,i){if(t=t||{},t.needle=e||t.needle,void 0==t.needle){var n=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(n)}this.$search.set(t);var o=this.$search.findAll(this.session);if(!o.length)return 0;this.$blockScrolling+=1;var r=this.multiSelect;i||r.toSingleRange(o[0]);for(var s=o.length;s--;)r.addRange(o[s],!0);return n&&r.rangeList.rangeAtPoint(n.start)&&r.addRange(n,!0),this.$blockScrolling-=1,o.length},this.selectMoreLines=function(e,t){var i=this.selection.toOrientedRange(),n=i.cursor==i.end,o=this.session.documentToScreenPosition(i.cursor);this.selection.$desiredColumn&&(o.column=this.selection.$desiredColumn);var r=this.session.screenToDocumentPosition(o.row+e,o.column);if(i.isEmpty())var s=r;else var l=this.session.documentToScreenPosition(n?i.end:i.start),s=this.session.screenToDocumentPosition(l.row+e,l.column);if(n){var c=a.fromPoints(r,s);c.cursor=c.start}else{var c=a.fromPoints(s,r);c.cursor=c.end}if(c.desiredColumn=o.column,this.selection.inMultiSelectMode){if(t)var h=i.cursor}else this.selection.addRange(i);this.selection.addRange(c),h&&this.selection.substractPoint(h)},this.transposeSelections=function(e){for(var t=this.session,i=t.multiSelect,n=i.ranges,o=n.length;o--;){var r=n[o];if(r.isEmpty()){var s=t.getWordRange(r.start.row,r.start.column);r.start.row=s.start.row,r.start.column=s.start.column,r.end.row=s.end.row,r.end.column=s.end.column}}i.mergeOverlappingRanges();for(var a=[],o=n.length;o--;){var r=n[o];a.unshift(t.getTextRange(r))}0>e?a.unshift(a.pop()):a.push(a.shift());for(var o=n.length;o--;){var r=n[o],s=r.clone();t.replace(r,a[o]),r.start.row=s.start.row,r.start.column=s.start.column}},this.selectMore=function(e,t,n){var o=this.session,r=o.multiSelect,s=r.toOrientedRange();if(!s.isEmpty()||(s=o.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!n)){var a=o.getTextRange(s),l=i(o,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,i=t.ranges,n=-1,o=i.filter(function(e){return e.cursor.row==n?!0:void(n=e.cursor.row)});if(i.length&&o.length!=i.length-1){o.forEach(function(e){t.substractPoint(e.cursor)});var r=0,s=1/0,l=i.map(function(t){var i=t.cursor,n=e.getLine(i.row),o=n.substr(i.column).search(/\S/g);return-1==o&&(o=0),i.column>r&&(r=i.column),s>o&&(s=o),o});i.forEach(function(t,i){var n=t.cursor,o=r-n.column,c=l[i]-s;o>c?e.insert(n,u.stringRepeat(" ",o-c)):e.remove(new a(n.row,n.column,n.row,n.column-o+c)),t.start.column=t.end.column=r,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,g=h==d;if(g){var f,p=this.session.getLength();do f=this.session.getLine(d);while(/[=:]/.test(f)&&++d0);0>h&&(h=0),d>=p&&(d=p-1)}var m=this.session.doc.removeLines(h,d);m=this.$reAlignText(m,g),this.session.doc.insert({row:h,column:0},m.join("\n")+"\n"),g||(c.start.column=0,c.end.column=m[m.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?o:n:r)}}).call(m.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(m.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",c)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",c))},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t){"use strict";var i=e("../../range").Range,n=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(){return null},this.indentationBlock=function(e,t,n){var o=/\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=n||r.length,l=e.getLength(),c=t,h=t;++t=u)break;h=t}}if(h>c){var d=e.getLine(h).length;return new i(c,a,h,d)}}},this.openingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o+1},a=e.$findClosingBracket(t,s,r);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,n,o){var r={row:n,column:o},s=e.$findOpeningBracket(t,r);return s?(s.column++,r.column--,i.fromPoints(s,r)):void 0}}).call(n.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter { background: #f0f0f0; color: #333; } .ace-tm .ace_print-margin { width: 1px; background: #e8e8e8; } .ace-tm .ace_fold { background-color: #6B72E6; } .ace-tm { background-color: #FFFFFF; color: black; } .ace-tm .ace_cursor { color: black; } .ace-tm .ace_invisible { color: rgb(191, 191, 191); } .ace-tm .ace_storage, .ace-tm .ace_keyword { color: blue; } .ace-tm .ace_constant { color: rgb(197, 6, 11); } .ace-tm .ace_constant.ace_buildin { color: rgb(88, 72, 246); } .ace-tm .ace_constant.ace_language { color: rgb(88, 92, 246); } .ace-tm .ace_constant.ace_library { color: rgb(6, 150, 14); } .ace-tm .ace_invalid { background-color: rgba(255, 0, 0, 0.1); color: red; } .ace-tm .ace_support.ace_function { color: rgb(60, 76, 114); } .ace-tm .ace_support.ace_constant { color: rgb(6, 150, 14); } .ace-tm .ace_support.ace_type, .ace-tm .ace_support.ace_class { color: rgb(109, 121, 222); } .ace-tm .ace_keyword.ace_operator { color: rgb(104, 118, 135); } .ace-tm .ace_string { color: rgb(3, 106, 7); } .ace-tm .ace_comment { color: rgb(76, 136, 107); } .ace-tm .ace_comment.ace_doc { color: rgb(0, 102, 255); } .ace-tm .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191); } .ace-tm .ace_constant.ace_numeric { color: rgb(0, 0, 205); } .ace-tm .ace_variable { color: rgb(49, 132, 149); } .ace-tm .ace_xml-pe { color: rgb(104, 104, 91); } .ace-tm .ace_entity.ace_name.ace_function { color: #0000A2; } .ace-tm .ace_heading { color: rgb(12, 7, 255); } .ace-tm .ace_list { color:rgb(185, 6, 144); } .ace-tm .ace_meta.ace_tag { color:rgb(0, 22, 142); } .ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0) } .ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255); } .ace-tm.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px white; border-radius: 2px; } .ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0); } .ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101); } .ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192); } .ace-tm .ace_marker-layer .ace_active-line { background: rgba(0, 0, 0, 0.07); } .ace-tm .ace_gutter-active-line { background-color : #dcdcdc; } .ace-tm .ace_marker-layer .ace_selected-word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250); } .ace-tm .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; } ';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t){"use strict";function i(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeEditor",this.$onChangeEditor)}{var n=(e("./lib/oop"),e("./lib/dom"));e("./range").Range}(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(){var e=this.editor;if(e){this.editor=null,e.widgetManager=null,e.renderer.off("beforeRender",this.measureWidgets),e.renderer.off("afterRender",this.renderWidgets);var t=this.session.lineWidgets;t&&t.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.data,n=i.range,o=n.start.row,r=n.end.row-o;if(0===r);else if("removeText"==i.action||"removeLines"==i.action){var s=t.splice(o+1,r);s.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var a=new Array(r);a.unshift(o,0),t.splice.apply(t,a),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){e&&(t=!1,e.row=i)}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=n.createElement("div"),e.el.innerHTML=e.html),e.el&&(n.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=void 0),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var i=this.session._changedWidgets,n=t.layerConfig;if(i&&i.length){for(var o=1/0,r=0;ra&&(a=0)),s.rowCount!=a&&(s.rowCount=a,s.row0&&!n[o];)o--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=o;r>=s;s++){var a=n[s];if(a&&a.el){a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.el.style.right=a.fixedWidth?t.scrollBar.getWidth()+"px":""}}}}}).call(i.prototype),t.LineWidgets=i}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t){"use strict";function i(e,t,i){for(var n=0,o=e.length-1;o>=n;){var r=n+o>>1,s=i(t,e[r]);if(s>0)n=r+1;else{if(!(0>s))return r;o=r-1}}return-(n+1)}function n(e,t,n){var o=e.getAnnotations().sort(s.comparePoints);if(o.length){var r=i(o,{row:t,column:-1},s.comparePoints);0>r&&(r=-r-1),r>=o.length-1?r=n>0?0:o.length-1:0===r&&0>n&&(r=o.length-1);var a=o[r];if(a&&n){if(a.row===t){do a=o[r+=n];while(a&&a.row===t);if(!a)return o.slice()}var l=[];t=a.row;do l[0>n?"unshift":"push"](a),a=o[r+=n];while(a&&a.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,r=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var s=e.getCursorPosition(),a=s.row,l=i.lineWidgets&&i.lineWidgets[a];l?l.destroy():a-=t;var c,h=n(i,a,t);if(h){var u=h[0];s.column=(u.pos&&"number"!=typeof u.column?u.pos.sc:u.column)||0,s.row=u.row,c=e.renderer.$gutterLayer.$annotations[s.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var d={row:s.row,fixedWidth:!0,coverGutter:!0,el:r.createElement("div")},g=d.el.appendChild(r.createElement("div")),f=d.el.appendChild(r.createElement("div"));f.className="error_widget_arrow "+c.className;var p=e.renderer.$cursorLayer.getPixelPosition(s).left;f.style.left=p+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",g.className="error_widget "+c.className,g.innerHTML=c.text.join("
"),g.appendChild(r.createElement("div"));var m=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(d.destroy(),{command:"null"})};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(m),i.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},r.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; } ","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","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"],function(e,t){"use strict";e("./lib/fixoldbrowsers");var i=e("./lib/dom"),n=e("./lib/event"),o=e("./editor").Editor,r=e("./edit_session").EditSession,s=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.edit=function(e){if("string"==typeof e){var r=e;if(e=document.getElementById(r),!e)throw new Error("ace.edit can't find div #"+r)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var l=e;s=l.value,e=i.createElement("pre"),l.parentNode.replaceChild(e,l)}else s=i.getInnerText(e),e.innerHTML="";var c=t.createEditSession(s),h=new o(new a(e));h.setSession(c);var u={document:c,editor:h,onResize:h.resize.bind(h,null)};return l&&(u.textarea=l),n.addListener(window,"resize",u.onResize),h.on("destroy",function(){n.removeListener(window,"resize",u.onResize),u.editor.container.env=null}),h.container.env=h.env=u,h},t.createEditSession=function(e,t){var i=new r(e,t);return i.setUndoManager(new s),i},t.EditSession=r,t.UndoManager=s}),function(){ace.acequire(["ace/ace"],function(e){e&&e.config.init(!0),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t){"use strict";var i=e("../lib/oop"),n=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};i.inherits(o,n),t.JsonHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t){"use strict";var i=e("../range").Range,n=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),o=n.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(n.prototype),t.MatchingBraceOutdent=n}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t){"use strict";var i,n=e("../../lib/oop"),o=e("../behaviour").Behaviour,r=e("../../token_iterator").TokenIterator,s=e("../../lib/lang"),a=["text","paren.rparen","punctuation.operator"],l=["text","paren.rparen","punctuation.operator","comment"],c={},h=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,c.rangeCount!=e.multiSelect.rangeCount&&(c={rangeCount:e.multiSelect.rangeCount})),c[t]?i=c[t]:void(i=c[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(){this.add("braces","insertion",function(e,t,n,o,r){var a=n.getCursorPosition(),l=o.doc.getLine(a.row);if("{"==r){h(n);var c=n.getSelectionRange(),d=o.doc.getTextRange(c);if(""!==d&&"{"!==d&&n.getWrapBehavioursEnabled())return{text:"{"+d+"}",selection:!1};if(u.isSaneInsertion(n,o))return/[\]\}\)]/.test(l[a.column])||n.inMultiSelectMode?(u.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(u.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){h(n);var g=l.substring(a.column,a.column+1);if("}"==g){var f=o.$findOpeningBracket("}",{column:a.column+1,row:a.row});if(null!==f&&u.isAutoInsertedClosing(a,l,r))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){h(n);var p="";u.isMaybeInsertedClosing(a,l)&&(p=s.stringRepeat("}",i.maybeInsertedBrackets),u.clearMaybeInsertedClosing());var g=l.substring(a.column,a.column+1);if("}"===g){var m=o.findMatchingBracket({row:a.row,column:a.column+1},"}");if(!m)return null;var v=this.$getIndent(o.getLine(m.row))}else{if(!p)return void u.clearMaybeInsertedClosing();var v=this.$getIndent(l)}var A=v+o.getTabString();return{text:"\n"+A+"\n"+v+p,selection:[1,A.length,1,A.length]}}u.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){h(n);var a=o.doc.getLine(r.start.row),l=a.substring(r.end.column,r.end.column+1);if("}"==l)return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,o){if("("==o){h(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return{text:"("+s+")",selection:!1};if(u.isSaneInsertion(i,n))return u.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==o){h(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var d=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==d&&u.isAutoInsertedClosing(a,l,o))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,o){var r=n.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r){h(i);var s=n.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(")"==a)return o.end.column++,o}}),this.add("brackets","insertion",function(e,t,i,n,o){if("["==o){h(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return{text:"["+s+"]",selection:!1};if(u.isSaneInsertion(i,n))return u.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){h(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var d=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==d&&u.isAutoInsertedClosing(a,l,o))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,o){var r=n.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r){h(i);var s=n.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if("]"==a)return o.end.column++,o}}),this.add("string_dquotes","insertion",function(e,t,i,n,o){if('"'==o||"'"==o){h(i);var r=o,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return{text:r+a+r,selection:!1};var l=i.getCursorPosition(),c=n.doc.getLine(l.row),d=c.substring(l.column-1,l.column);if("\\"==d)return null;for(var g,f=n.getTokens(s.start.row),p=0,m=-1,v=0;vm&&(m=g.value.indexOf(r)),!(g.value.length+p>s.start.column));v++)p+=f[v].value.length;if(!g||0>m&&"comment"!==g.type&&("string"!==g.type||s.start.column!==g.value.length+p-1&&g.value.lastIndexOf(r)===g.value.length-1)){if(!u.isSaneInsertion(i,n))return;return{text:r+r,selection:[1,1]}}if(g&&"string"===g.type){var A=c.substring(l.column,l.column+1);if(A==r)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,o){var r=n.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)){h(i);var s=n.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(a==r)return o.end.column++,o}})};u.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new r(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",a)){var o=new r(t,i.row,i.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",a))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",l); -n.importCssString(p,"ace_editor");var m=function(e,t){var i=this;this.container=e||n.createElement("div"),this.$keepTextAreaAtCursor=!r.isOldIE,n.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=n.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=n.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=n.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new s(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var f=this.$textLayer=new l(this.content);this.canvas=f.element,this.$markerFront=new a(this.content),this.$cursorLayer=new c(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new h(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new g(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new d(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,f),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var o=this.container;n||(n=o.clientHeight||o.scrollHeight),i||(i=o.clientWidth||o.scrollWidth);var r=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(r|this.$changes,!0):this.$loop.schedule(r|this.$changes),this.resizing&&(this.resizing=0)}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var o=0,r=this.$size,s={width:r.width,height:r.height,scrollerHeight:r.scrollerHeight,scrollerWidth:r.scrollerWidth};return n&&(e||r.height!=n)&&(r.height=n,o|=this.CHANGE_SIZE,r.scrollerHeight=r.height,this.$horizScroll&&(r.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",o|=this.CHANGE_SCROLL),i&&(e||r.width!=i)&&(o|=this.CHANGE_SIZE,r.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",r.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(o|=this.CHANGE_FULL)),r.$dirty=!i||!n,o&&this._signal("resize",s),o},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=n.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=n.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.lineHeight;if(!(0>t||t>e.height-n)){var o=this.characterWidth;if(this.$composition){var r=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(r)[0]+2,n+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,this.textarea.style.height=n+"px",this.textarea.style.width=o+"px",this.textarea.style.left=Math.min(i,this.$size.scrollerWidth-o)+"px",this.textarea.style.top=Math.min(t,this.$size.height-n)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var o=this.scrollMargin;o.top=0|e,o.bottom=0|t,o.right=0|n,o.left=0|i,o.v=o.top+o.bottom,o.h=o.left+o.right,o.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-o.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var o=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,o,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),o=n*this.lineHeight,r=this.scrollTop%this.lineHeight,s=t.scrollerHeight+this.lineHeight,a=this.$getLongestLine(),l=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-a-2*this.$padding<0),c=this.$horizScroll!==l;c&&(this.$horizScroll=l,this.scrollBarH.setVisible(l));var h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;o+=h,this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,o-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,a+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var u=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-o+h<0||this.scrollTop),d=this.$vScroll!==u;d&&(this.$vScroll=u,this.scrollBarV.setVisible(u));var g,f,p=Math.ceil(s/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-r)/this.lineHeight)),v=m+p,A=this.lineHeight;m=e.screenToDocumentRow(m,0);var w=e.getFoldLine(m);w&&(m=w.start.row),g=e.documentToScreenRow(m,0),f=e.getRowLength(m)*A,v=Math.min(e.screenToDocumentRow(v,0),e.getLength()-1),s=t.scrollerHeight+e.getRowLength(v)*A+f,r=this.scrollTop-g*A;var C=0;return this.layerConfig.width!=a&&(C=this.CHANGE_H_SCROLL),(c||d)&&(C=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(a=this.$getLongestLine())),this.layerConfig={width:a,padding:this.$padding,firstRow:m,firstRowScreen:g,lastRow:v,lineHeight:A,characterWidth:this.characterWidth,minHeight:s,maxHeight:o,offset:r,gutterOffset:Math.max(0,Math.ceil((r+t.height-t.scrollerHeight)/A)),height:this.$size.scrollerHeight},C},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;return e>i.lastRow+1||tr?(t&&(r-=t*this.$size.scrollerHeight),0===r&&(r=-this.scrollMargin.top),this.session.setScrollTop(r)):l+this.$size.scrollerHeight-ao?(oi;++i)o.push(r(i/this.STEPS,e,t-e));return o},this.scrollToLine=function(e,t,i,n){var o=this.$cursorLayer.getPixelPosition({row:e,column:0}),r=o.top;t&&(r-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(r),i!==!1&&this.animateScrolling(s,n)},this.animateScrolling=function(e,t){var i=this.scrollTop;if(this.$animatedScroll){var n=this;if(e!=i){if(this.$scrollAnimation){var o=this.$scrollAnimation.steps;if(o.length&&(e=o[0],e==i))return}var r=n.$calcSteps(e,i);this.$scrollAnimation={from:e,to:i,steps:r},clearInterval(this.$timer),n.session.setScrollTop(r.shift()),n.session.$scrollTop=i,this.$timer=setInterval(function(){r.length?(n.session.setScrollTop(r.shift()),n.session.$scrollTop=i):null!=i?(n.session.$scrollTop=-1,n.session.setScrollTop(i),i=null):(n.$timer=clearInterval(n.$timer),n.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return 0>t&&this.session.getScrollTop()>=1-this.scrollMargin.top?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom?!0:0>e&&this.session.getScrollLeft()>=1-this.scrollMargin.left?!0:e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right?!0:void 0},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,o=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),r=Math.round(n);return{row:o,column:r,side:n-r>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),o=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(o,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),o=this.$padding+Math.round(n.column*this.characterWidth),r=n.row*this.lineHeight;return{pageX:i.left+o-this.scrollLeft,pageY:i.top+r-this.scrollTop}},this.visualizeFocus=function(){n.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){n.removeCssClass(this.container,"ace_focus")},this.showComposition=function(){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,n.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(n.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(r.$themeId!=e)return t&&t();if(i.cssClass){n.importCssString(i.cssText,i.cssClass,r.container.ownerDocument),r.theme&&n.removeCssClass(r.container,r.theme.cssClass);var o="padding"in i?i.padding:"padding"in(r.theme||{})?4:r.$padding;r.$padding&&o!=r.$padding&&r.setPadding(o),r.$theme=i.cssClass,r.theme=i,n.addCssClass(r.container,i.cssClass),n.setCssClass(r.container,"ace_dark",i.isDark),r.$size&&(r.$size.width=0,r.$updateSizeAsync()),r._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var r=this;if(this.$themeId=e,r._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){n.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){n.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),o.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){n.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=e?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=n.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(){this.updateFull()}},minLines:{set:function(){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t){"use strict";var n=e("../lib/oop"),o=e("../lib/net"),r=e("../lib/event_emitter").EventEmitter,s=e("../config"),a=function(t,n,o,r){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),s.get("packaged")||!e.toUrl)r=r||s.moduleUrl(n.id,"worker");else{var a=this.$normalizePath;r=r||a(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=a(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(21),u=new h([c],{type:"application/javascript"}),d=(window.URL||window.webkitURL).createObjectURL(u);this.$worker=new Worker(d)}catch(g){if(!(g instanceof window.DOMException))throw g;var u=this.$workerBlob(r),f=window.URL||window.webkitURL,p=f.createObjectURL(u);this.$worker=new Worker(p),f.revokeObjectURL(p)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:o}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){n.implement(this,r),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(i){console.error(i.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new n;return r.append(t),r.getBlob("application/javascript")}}}).call(a.prototype);var l=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,o=!1,a=Object.create(r),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(o?setTimeout(c):c())},this.setEmitSync=function(e){o=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&a._signal(e.event,e.data)};a.postMessage=function(e){l.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){for(n=new e[i](a);l.messageBuffer.length;)c()})};l.prototype=a.prototype,t.UIWorkerClient=l,t.WorkerClient=a}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t){"use strict";var i=e("./range").Range,n=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),r=function(e,t,i,n,o,r){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=o,this.othersClass=r,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,n),this.setup=function(){var e=this,t=this.doc,n=this.session,o=this.$pos;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(o.row,o.column),this.markerId=n.addMarker(new i(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new i(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);e.others.push(n)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(o){e.removeMarker(n.markerId),n.markerId=e.addMarker(new i(o.value.row,o.value.column,o.value.row,o.value.column+t.length),t.othersClass,null,!1)})})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e-1},u.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},u.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},u.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},u.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},u.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},u.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},n.inherits(u,o),t.CstyleBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t){"use strict";var i=e("../../lib/oop"),n=e("../../range").Range,o=e("./fold_mode").FoldMode,r=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(r,o),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,i,n){var o=e.getLine(i),r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],i,s);var a=e.getCommentFoldRange(i,s+r[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),o=i.search(/\S/),r=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=r)break;if(h.isMultiLine())t=h.end.row;else if(o==c)break}a=t}}return new n(r,s,a,e.getLine(a).length)}}.call(r.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t){"use strict";var n=e("../lib/oop"),o=e("./text").Mode,r=e("./json_highlight_rules").JsonHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=new a,this.foldingRules=new l};n.inherits(h,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new c(["ace"],i(17),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations([t.data])}),t.on("ok",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(h.prototype),t.Mode=h})},function(){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t){"use strict";var i=e("../lib/dom"),n=e("../lib/lang"),o=e("../lib/event"),r=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; padding: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",s=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");i.importCssString(r,"ace_searchbox");var l=''.replace(/>\s+/g,">"),c=function(e){var t=i.createElement("div");t.innerHTML=l,this.element=t.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=a.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=n.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new s([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new s,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),o=!n&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){var i=e.searchBox||new c(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){if(void 0===window.window||!window.document){window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console,window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;var chunks=id.split("/");if(!window.acequire.tlns)return console.log("unable to load "+id);chunks[0]=window.acequire.tlns[chunks[0]]||chunks[0];var path=chunks.join("/")+".js";return window.acequire.id=id,importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},window.initBaseUrls=function initBaseUrls(topLevelNamespaces){acequire.tlns=topLevelNamespaces},window.initSender=function initSender(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.command){if(!main[msg.command])throw Error("Unknown command:"+msg.command);main[msg.command].apply(main,msg.args)}else if(msg.init){initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}else msg.event&&sender&&sender._signal(msg.event,msg.data)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;"insertText"===delta.action?start.row===row&&column>=start.column?start.column===column&&this.$insertRight||(start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row)):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):"insertLines"===delta.action?start.row===row&&0===column&&this.$insertRight||row>=start.row&&(row+=end.row-start.row):"removeText"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):"removeLines"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(text){this.$lines=[],0===text.length?this.$lines=[""]:Array.isArray(text)?this._insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.getLine(range.start.row).substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row,range.end.row);lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;return range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this._insertLines(position.row,lines),position=this.insertInLine(position,lastLine||"")),position},this.insertLines=function(row,lines){return row>=this.getLength()?this.insert({row:row,column:0},"\\n"+lines.join("\\n")):this._insertLines(Math.max(row,0),lines)},this._insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};for(;lines.length>61440;){var end=this._insertLines(row,lines.slice(0,61440));lines=lines.slice(61440),row=end.row}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:"insertLines",range:range,lines:lines};return this._signal("change",{data:delta}),range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||"";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:"insertText",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._signal("change",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||"";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:"insertText",range:Range.fromPoints(position,end),text:text};return this._signal("change",{data:delta}),end},this.remove=function(range){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this._removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:"removeText",range:range,text:removed};return this._signal("change",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){return 0>firstRow||lastRow>=this.getLength()?this.remove(new Range(firstRow,0,lastRow+1,0)):this._removeLines(firstRow,lastRow)},this._removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:"removeLines",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._signal("change",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:"removeText",range:range,text:this.getNewLineCharacter()};this._signal("change",{data:delta})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);"insertLines"==delta.action?this.insertLines(range.start.row,delta.lines):"insertText"==delta.action?this.insert(range.start,delta.text):"removeLines"==delta.action?this._removeLines(range.start.row,range.end.row-1):"removeText"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);"insertLines"==delta.action?this._removeLines(range.start.row,range.end.row-1):"insertText"==delta.action?this.remove(range):"removeLines"==delta.action?this._insertLines(range.start.row,delta.lines):"removeText"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if("object"!=typeof obj||!obj)return obj;var cons=obj.constructor;if(cons===RegExp)return obj;var copy=cons();for(var key in obj)copy[key]="object"==typeof obj[key]?exports.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue();try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);return this.sender.emit("error",{row:pos.row,column:pos.column,text:e.message,type:"error"}),void 0}this.sender.emit("ok")}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;\nfor(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; -}},this.onUpdate=function(e){var t=e.data,n=t.range;if(n.start.row===n.end.row&&n.start.row===this.pos.row&&!this.$updating){this.$updating=!0;var o="insertText"===t.action?n.end.column-n.start.column:n.start.column-n.end.column;if(n.start.column>=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var r=n.start.column-this.pos.column;if(this.length+=o,!this.session.$fromUndo){if("insertText"===t.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};a.row===n.start.row&&n.start.column=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};a.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;ei;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}).call(r.prototype),t.PlaceHolder=r}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t){function i(e,t){return e.row==t.row&&e.column==t.column}function n(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&r.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!n&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,u=e.editor,d=u.selection,g=u.inMultiSelectMode,f=e.getDocumentPosition(),p=d.getCursor(),m=e.inSelection()||d.isEmpty()&&i(f,p),v=e.x,A=e.y,w=function(e){v=e.clientX,A=e.clientY},C=u.session,E=u.renderer.pixelToScreenCoordinates(v,A),F=E;if(u.$mouseHandler.$enableJumpToDef)a&&n||l&&n?h="add":n&&(h="block");else if(l&&!n){if(h="add",!g&&s)return}else n&&(h="block");if(h&&r.isMac&&t.ctrlKey&&u.$mouseHandler.cancelContextMenu(),"add"==h){if(!g&&m)return;if(!g){var y=d.toOrientedRange();u.addSelectionMarker(y)}var b=d.rangeList.rangeAtPoint(f);u.$blockScrolling++,u.inVirtualSelectionMode=!0,s&&(b=null,y=d.ranges[0],u.removeSelectionMarker(y)),u.once("mouseup",function(){var e=d.toOrientedRange();b&&e.isEmpty()&&i(b.cursor,e.cursor)?d.substractPoint(e.cursor):(s?d.substractPoint(y.cursor):y&&(u.removeSelectionMarker(y),d.addRange(y)),d.addRange(e)),u.$blockScrolling--,u.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),u.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=u.renderer.pixelToScreenCoordinates(v,A),t=C.screenToDocumentPosition(e.row,e.column);i(F,e)&&i(t,d.lead)||(F=e,u.selection.moveToPosition(t),u.renderer.scrollCursorIntoView(),u.removeSelectionMarkers(S),S=d.rectangularRangeBlock(F,E),u.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=u.$mouseHandler.$clickSelection.clone()),S.forEach(u.addSelectionMarker,u),u.updateSelectionMarkers())};g&&!l?d.toSingleRange():!g&&l&&(x=d.toOrientedRange(),u.addSelectionMarker(x)),s?E=C.documentToScreenPosition(d.lead):d.moveToPosition(f),F={row:-1,column:-1};var B=function(){clearInterval(k),u.removeSelectionMarkers(S),S.length||(S=[d.toOrientedRange()]),u.$blockScrolling++,x&&(u.removeSelectionMarker(x),d.toSingleRange(x));for(var e=0;e1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);return t?(this.$onRemoveRange(t),t[0]):void 0},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new s,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=a.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),o=i.start.row,r=i.end.row;if(o==r){if(n)var s=i.end,l=i.start;else var s=i.start,l=i.end;return this.addRange(a.fromPoints(l,l)),void this.addRange(a.fromPoints(s,s))}var c=[],h=this.getLineRange(o,!0);h.start.column=i.start.column,c.push(h);for(var u=o+1;r>u;u++)c.push(this.getLineRange(u,!0));h=this.getLineRange(r,!0),h.end.column=i.end.column,c.push(h),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=a.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),o=this.session.documentToScreenPosition(this.selectionAnchor),r=this.rectangularRangeBlock(n,o);r.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var o=[],r=e.columns&&(s=0),0>h&&(h=0),h==u&&(i=!0);for(var d=h;u>=d;d++){var g=a.fromPoints(this.session.screenToDocumentPosition(d,s),this.session.screenToDocumentPosition(d,l));if(g.isEmpty()){if(f&&n(g.end,f))break;var f=g.end}g.cursor=r?g.start:g.end,o.push(g)}if(c&&o.reverse(),!i){for(var p=o.length-1;o[p].isEmpty()&&p>0;)p--;if(p>0)for(var m=0;o[m].isEmpty();)m++;for(var v=p;v>=m;v--)o[v].isEmpty()&&o.splice(v,1)}return o}}.call(l.prototype);var m=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var o=t.indexOf(n);-1!=o&&t.splice(o,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(d.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(d.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,o=i&&i.keepOrder,r=1==i||i&&i.$byLines,s=this.session,a=this.selection,c=a.rangeList,h=(o?a:c).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var u=a._eventRegistry;a._eventRegistry={};var d=new l(s);this.inVirtualSelectionMode=!0;for(var g=h.length;g--;){if(r)for(;g>0&&h[g].start.row==h[g-1].end.row;)g--;d.fromOrientedRange(h[g]),d.index=g,this.selection=s.selection=d;var f=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===f||(n=f),d.toOrientedRange(h[g])}d.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=u,a.mergeOverlappingRanges();var p=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),p&&p.from==p.to&&this.renderer.animateScrolling(p.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;nn.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,e);for(var o=n.length;o--;){var r=n[o];r.isEmpty()||this.session.remove(r),this.session.insert(r.start,i[o])}}},this.findAll=function(e,t,i){if(t=t||{},t.needle=e||t.needle,void 0==t.needle){var n=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(n)}this.$search.set(t);var o=this.$search.findAll(this.session);if(!o.length)return 0;this.$blockScrolling+=1;var r=this.multiSelect;i||r.toSingleRange(o[0]);for(var s=o.length;s--;)r.addRange(o[s],!0);return n&&r.rangeList.rangeAtPoint(n.start)&&r.addRange(n,!0),this.$blockScrolling-=1,o.length},this.selectMoreLines=function(e,t){var i=this.selection.toOrientedRange(),n=i.cursor==i.end,o=this.session.documentToScreenPosition(i.cursor);this.selection.$desiredColumn&&(o.column=this.selection.$desiredColumn);var r=this.session.screenToDocumentPosition(o.row+e,o.column);if(i.isEmpty())var s=r;else var l=this.session.documentToScreenPosition(n?i.end:i.start),s=this.session.screenToDocumentPosition(l.row+e,l.column);if(n){var c=a.fromPoints(r,s);c.cursor=c.start}else{var c=a.fromPoints(s,r);c.cursor=c.end}if(c.desiredColumn=o.column,this.selection.inMultiSelectMode){if(t)var h=i.cursor}else this.selection.addRange(i);this.selection.addRange(c),h&&this.selection.substractPoint(h)},this.transposeSelections=function(e){for(var t=this.session,i=t.multiSelect,n=i.ranges,o=n.length;o--;){var r=n[o];if(r.isEmpty()){var s=t.getWordRange(r.start.row,r.start.column);r.start.row=s.start.row,r.start.column=s.start.column,r.end.row=s.end.row,r.end.column=s.end.column}}i.mergeOverlappingRanges();for(var a=[],o=n.length;o--;){var r=n[o];a.unshift(t.getTextRange(r))}0>e?a.unshift(a.pop()):a.push(a.shift());for(var o=n.length;o--;){var r=n[o],s=r.clone();t.replace(r,a[o]),r.start.row=s.start.row,r.start.column=s.start.column}},this.selectMore=function(e,t,n){var o=this.session,r=o.multiSelect,s=r.toOrientedRange();if(!s.isEmpty()||(s=o.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!n)){var a=o.getTextRange(s),l=i(o,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,i=t.ranges,n=-1,o=i.filter(function(e){return e.cursor.row==n?!0:void(n=e.cursor.row)});if(i.length&&o.length!=i.length-1){o.forEach(function(e){t.substractPoint(e.cursor)});var r=0,s=1/0,l=i.map(function(t){var i=t.cursor,n=e.getLine(i.row),o=n.substr(i.column).search(/\S/g);return-1==o&&(o=0),i.column>r&&(r=i.column),s>o&&(s=o),o});i.forEach(function(t,i){var n=t.cursor,o=r-n.column,c=l[i]-s;o>c?e.insert(n,u.stringRepeat(" ",o-c)):e.remove(new a(n.row,n.column,n.row,n.column-o+c)),t.start.column=t.end.column=r,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,g=h==d;if(g){var f,p=this.session.getLength();do f=this.session.getLine(d);while(/[=:]/.test(f)&&++d0);0>h&&(h=0),d>=p&&(d=p-1)}var m=this.session.doc.removeLines(h,d);m=this.$reAlignText(m,g),this.session.doc.insert({row:h,column:0},m.join("\n")+"\n"),g||(c.start.column=0,c.end.column=m[m.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?o:n:r)}}).call(m.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(m.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",c)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",c))},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t){"use strict";var i=e("../../range").Range,n=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(){return null},this.indentationBlock=function(e,t,n){var o=/\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=n||r.length,l=e.getLength(),c=t,h=t;++t=u)break;h=t}}if(h>c){var d=e.getLine(h).length;return new i(c,a,h,d)}}},this.openingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o+1},a=e.$findClosingBracket(t,s,r);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,n,o){var r={row:n,column:o},s=e.$findOpeningBracket(t,r);return s?(s.column++,r.column--,i.fromPoints(s,r)):void 0}}).call(n.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter { background: #f0f0f0; color: #333; } .ace-tm .ace_print-margin { width: 1px; background: #e8e8e8; } .ace-tm .ace_fold { background-color: #6B72E6; } .ace-tm { background-color: #FFFFFF; color: black; } .ace-tm .ace_cursor { color: black; } .ace-tm .ace_invisible { color: rgb(191, 191, 191); } .ace-tm .ace_storage, .ace-tm .ace_keyword { color: blue; } .ace-tm .ace_constant { color: rgb(197, 6, 11); } .ace-tm .ace_constant.ace_buildin { color: rgb(88, 72, 246); } .ace-tm .ace_constant.ace_language { color: rgb(88, 92, 246); } .ace-tm .ace_constant.ace_library { color: rgb(6, 150, 14); } .ace-tm .ace_invalid { background-color: rgba(255, 0, 0, 0.1); color: red; } .ace-tm .ace_support.ace_function { color: rgb(60, 76, 114); } .ace-tm .ace_support.ace_constant { color: rgb(6, 150, 14); } .ace-tm .ace_support.ace_type, .ace-tm .ace_support.ace_class { color: rgb(109, 121, 222); } .ace-tm .ace_keyword.ace_operator { color: rgb(104, 118, 135); } .ace-tm .ace_string { color: rgb(3, 106, 7); } .ace-tm .ace_comment { color: rgb(76, 136, 107); } .ace-tm .ace_comment.ace_doc { color: rgb(0, 102, 255); } .ace-tm .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191); } .ace-tm .ace_constant.ace_numeric { color: rgb(0, 0, 205); } .ace-tm .ace_variable { color: rgb(49, 132, 149); } .ace-tm .ace_xml-pe { color: rgb(104, 104, 91); } .ace-tm .ace_entity.ace_name.ace_function { color: #0000A2; } .ace-tm .ace_heading { color: rgb(12, 7, 255); } .ace-tm .ace_list { color:rgb(185, 6, 144); } .ace-tm .ace_meta.ace_tag { color:rgb(0, 22, 142); } .ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0) } .ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255); } .ace-tm.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px white; border-radius: 2px; } .ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0); } .ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101); } .ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192); } .ace-tm .ace_marker-layer .ace_active-line { background: rgba(0, 0, 0, 0.07); } .ace-tm .ace_gutter-active-line { background-color : #dcdcdc; } .ace-tm .ace_marker-layer .ace_selected-word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250); } .ace-tm .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; } ';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t){"use strict";function i(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeEditor",this.$onChangeEditor)}{var n=(e("./lib/oop"),e("./lib/dom"));e("./range").Range}(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(){var e=this.editor;if(e){this.editor=null,e.widgetManager=null,e.renderer.off("beforeRender",this.measureWidgets),e.renderer.off("afterRender",this.renderWidgets);var t=this.session.lineWidgets;t&&t.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.data,n=i.range,o=n.start.row,r=n.end.row-o;if(0===r);else if("removeText"==i.action||"removeLines"==i.action){var s=t.splice(o+1,r);s.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var a=new Array(r);a.unshift(o,0),t.splice.apply(t,a),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){e&&(t=!1,e.row=i)}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=n.createElement("div"),e.el.innerHTML=e.html),e.el&&(n.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=void 0),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var i=this.session._changedWidgets,n=t.layerConfig;if(i&&i.length){for(var o=1/0,r=0;ra&&(a=0)),s.rowCount!=a&&(s.rowCount=a,s.row0&&!n[o];)o--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=o;r>=s;s++){var a=n[s];if(a&&a.el){a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.el.style.right=a.fixedWidth?t.scrollBar.getWidth()+"px":""}}}}}).call(i.prototype),t.LineWidgets=i}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t){"use strict";function i(e,t,i){for(var n=0,o=e.length-1;o>=n;){var r=n+o>>1,s=i(t,e[r]);if(s>0)n=r+1;else{if(!(0>s))return r;o=r-1}}return-(n+1)}function n(e,t,n){var o=e.getAnnotations().sort(s.comparePoints);if(o.length){var r=i(o,{row:t,column:-1},s.comparePoints);0>r&&(r=-r-1),r>=o.length-1?r=n>0?0:o.length-1:0===r&&0>n&&(r=o.length-1);var a=o[r];if(a&&n){if(a.row===t){do a=o[r+=n];while(a&&a.row===t);if(!a)return o.slice()}var l=[];t=a.row;do l[0>n?"unshift":"push"](a),a=o[r+=n];while(a&&a.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,r=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var s=e.getCursorPosition(),a=s.row,l=i.lineWidgets&&i.lineWidgets[a];l?l.destroy():a-=t;var c,h=n(i,a,t);if(h){var u=h[0];s.column=(u.pos&&"number"!=typeof u.column?u.pos.sc:u.column)||0,s.row=u.row,c=e.renderer.$gutterLayer.$annotations[s.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var d={row:s.row,fixedWidth:!0,coverGutter:!0,el:r.createElement("div")},g=d.el.appendChild(r.createElement("div")),f=d.el.appendChild(r.createElement("div"));f.className="error_widget_arrow "+c.className; - -var p=e.renderer.$cursorLayer.getPixelPosition(s).left;f.style.left=p+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",g.className="error_widget "+c.className,g.innerHTML=c.text.join("
"),g.appendChild(r.createElement("div"));var m=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(d.destroy(),{command:"null"})};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(m),i.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},r.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; } ","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","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"],function(e,t){"use strict";e("./lib/fixoldbrowsers");var i=e("./lib/dom"),n=e("./lib/event"),o=e("./editor").Editor,r=e("./edit_session").EditSession,s=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.edit=function(e){if("string"==typeof e){var r=e;if(e=document.getElementById(r),!e)throw new Error("ace.edit can't find div #"+r)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var l=e;s=l.value,e=i.createElement("pre"),l.parentNode.replaceChild(e,l)}else s=i.getInnerText(e),e.innerHTML="";var c=t.createEditSession(s),h=new o(new a(e));h.setSession(c);var u={document:c,editor:h,onResize:h.resize.bind(h,null)};return l&&(u.textarea=l),n.addListener(window,"resize",u.onResize),h.on("destroy",function(){n.removeListener(window,"resize",u.onResize),u.editor.container.env=null}),h.container.env=h.env=u,h},t.createEditSession=function(e,t){var i=new r(e,t);return i.setUndoManager(new s),i},t.EditSession=r,t.UndoManager=s}),function(){ace.acequire(["ace/ace"],function(e){e&&e.config.init(!0),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t){"use strict";var i=e("../lib/oop"),n=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};i.inherits(o,n),t.JsonHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t){"use strict";var i=e("../range").Range,n=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),o=n.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(n.prototype),t.MatchingBraceOutdent=n}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t){"use strict";var i,n=e("../../lib/oop"),o=e("../behaviour").Behaviour,r=e("../../token_iterator").TokenIterator,s=e("../../lib/lang"),a=["text","paren.rparen","punctuation.operator"],l=["text","paren.rparen","punctuation.operator","comment"],c={},h=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,c.rangeCount!=e.multiSelect.rangeCount&&(c={rangeCount:e.multiSelect.rangeCount})),c[t]?i=c[t]:void(i=c[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(){this.add("braces","insertion",function(e,t,n,o,r){var a=n.getCursorPosition(),l=o.doc.getLine(a.row);if("{"==r){h(n);var c=n.getSelectionRange(),d=o.doc.getTextRange(c);if(""!==d&&"{"!==d&&n.getWrapBehavioursEnabled())return{text:"{"+d+"}",selection:!1};if(u.isSaneInsertion(n,o))return/[\]\}\)]/.test(l[a.column])||n.inMultiSelectMode?(u.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(u.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){h(n);var g=l.substring(a.column,a.column+1);if("}"==g){var f=o.$findOpeningBracket("}",{column:a.column+1,row:a.row});if(null!==f&&u.isAutoInsertedClosing(a,l,r))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){h(n);var p="";u.isMaybeInsertedClosing(a,l)&&(p=s.stringRepeat("}",i.maybeInsertedBrackets),u.clearMaybeInsertedClosing());var g=l.substring(a.column,a.column+1);if("}"===g){var m=o.findMatchingBracket({row:a.row,column:a.column+1},"}");if(!m)return null;var v=this.$getIndent(o.getLine(m.row))}else{if(!p)return void u.clearMaybeInsertedClosing();var v=this.$getIndent(l)}var A=v+o.getTabString();return{text:"\n"+A+"\n"+v+p,selection:[1,A.length,1,A.length]}}u.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){h(n);var a=o.doc.getLine(r.start.row),l=a.substring(r.end.column,r.end.column+1);if("}"==l)return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,o){if("("==o){h(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return{text:"("+s+")",selection:!1};if(u.isSaneInsertion(i,n))return u.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==o){h(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var d=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==d&&u.isAutoInsertedClosing(a,l,o))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,o){var r=n.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r){h(i);var s=n.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(")"==a)return o.end.column++,o}}),this.add("brackets","insertion",function(e,t,i,n,o){if("["==o){h(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return{text:"["+s+"]",selection:!1};if(u.isSaneInsertion(i,n))return u.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){h(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var d=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==d&&u.isAutoInsertedClosing(a,l,o))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,o){var r=n.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r){h(i);var s=n.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if("]"==a)return o.end.column++,o}}),this.add("string_dquotes","insertion",function(e,t,i,n,o){if('"'==o||"'"==o){h(i);var r=o,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return{text:r+a+r,selection:!1};var l=i.getCursorPosition(),c=n.doc.getLine(l.row),d=c.substring(l.column-1,l.column);if("\\"==d)return null;for(var g,f=n.getTokens(s.start.row),p=0,m=-1,v=0;vm&&(m=g.value.indexOf(r)),!(g.value.length+p>s.start.column));v++)p+=f[v].value.length;if(!g||0>m&&"comment"!==g.type&&("string"!==g.type||s.start.column!==g.value.length+p-1&&g.value.lastIndexOf(r)===g.value.length-1)){if(!u.isSaneInsertion(i,n))return;return{text:r+r,selection:[1,1]}}if(g&&"string"===g.type){var A=c.substring(l.column,l.column+1);if(A==r)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,o){var r=n.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)){h(i);var s=n.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(a==r)return o.end.column++,o}})};u.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new r(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",a)){var o=new r(t,i.row,i.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",a))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",l)},u.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},u.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},u.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},u.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},u.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},u.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},u.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},n.inherits(u,o),t.CstyleBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t){"use strict";var i=e("../../lib/oop"),n=e("../../range").Range,o=e("./fold_mode").FoldMode,r=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(r,o),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,i,n){var o=e.getLine(i),r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],i,s);var a=e.getCommentFoldRange(i,s+r[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),o=i.search(/\S/),r=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=r)break;if(h.isMultiLine())t=h.end.row;else if(o==c)break}a=t}}return new n(r,s,a,e.getLine(a).length)}}.call(r.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t){"use strict";var n=e("../lib/oop"),o=e("./text").Mode,r=e("./json_highlight_rules").JsonHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=new a,this.foldingRules=new l};n.inherits(h,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new c(["ace"],i(16),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations([t.data])}),t.on("ok",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(h.prototype),t.Mode=h})},function(){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t){"use strict";var i=e("../lib/dom"),n=e("../lib/lang"),o=e("../lib/event"),r=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; padding: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",s=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");i.importCssString(r,"ace_searchbox");var l=''.replace(/>\s+/g,">"),c=function(e){var t=i.createElement("div");t.innerHTML=l,this.element=t.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=a.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=n.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new s([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new s,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),o=!n&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){var i=e.searchBox||new c(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,i){function n(e,t){function i(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(){n.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var h;if(o.click){l.className+=" default";var u=document.createElement("button");s.buttonExpand=u,u.className="expand",u.innerHTML='
',a.appendChild(u),o.submenuTitle&&(u.title=o.submenuTitle),h=u}else{var d=document.createElement("div");d.className="expand",l.appendChild(d),h=l}h.onclick=function(){n._onExpandItem(s),h.focus()};var g=[];s.subItems=g;var f=document.createElement("ul");s.ul=f,f.className="menu",f.style.height="0",a.appendChild(f),i(f,g,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var n=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.visibleSubmenu=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu",o.menu=r;var s=document.createElement("ul");s.className="menu",r.appendChild(s),o.list=s,o.items=[];var a=document.createElement("button");o.focusButton=a;var l=document.createElement("li");l.style.overflow="hidden",l.style.height="0",l.appendChild(a),s.appendChild(l),i(s,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var o=i(3);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e){this.hide();var t=window.innerHeight,i=window.pageYOffset||document.scrollTop||0,r=t+i,s=e.offsetHeight,a=this.maxHeight,l=o.getAbsoluteLeft(e),c=o.getAbsoluteTop(e);r>c+s+a?(this.dom.menu.style.left=l+"px",this.dom.menu.style.top=c+s+"px",this.dom.menu.style.bottom=""):(this.dom.menu.style.left=l+"px",this.dom.menu.style.top="",this.dom.menu.style.bottom=t-c+"px"),document.body.appendChild(this.dom.menu);var h=this,u=this.dom.list;this.eventListeners.mousedown=o.addEventListener(document,"mousedown",function(e){var t=e.target;t==u||h._isChildOf(t,u)||(h.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.mousewheel=o.addEventListener(document,"mousewheel",function(e){e.stopPropagation(),e.preventDefault()}),this.eventListeners.keydown=o.addEventListener(document,"keydown",function(e){h._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){h.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.menu.parentNode&&(this.dom.menu.parentNode.removeChild(this.dom.menu),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(document,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",o.removeClassName(n.ul.parentNode,"selected"))},300),this.expandedItem=void 0),!i){var r=e.ul;r.style.display="block";{r.clientHeight}setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),i=t.indexOf(s),0==i&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),i=t.indexOf(s),i==t.length-1&&(t[0].focus(),l=!0)):37==a?("expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),r=t[i+1],r&&"expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),r=t[i+1],r&&"expand"==r.className&&(r=t[i+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.className="contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"type-string",title:o.string,click:function(){n._onAppend("","","string")}}]}],a=new r(s,{close:i});a.show(t)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,r=n.menu;if(i==r&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),o.addClassName(n.menu,"selected"),this.showContextMenu(n.menu,function(){o.removeClassName(n.menu,"selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=i(3),r=i(13);e.exports=n},function(e,t,i){(function(e,n){var o=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19, -JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,o,r){var s=r.length-1;switch(o){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g," ").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=r[s-1];case 13:this.$={};break;case 14:this.$=r[s-1];break;case 15:this.$=[r[s-2],r[s]];break;case 16:this.$={},this.$[r[s][0]]=r[s][1];break;case 17:this.$=r[s-2],r[s-2][r[s][0]]=r[s][1];break;case 18:this.$=[];break;case 19:this.$=r[s-1];break;case 20:this.$=[r[s]];break;case 21:this.$=r[s-2],r[s-2].push(r[s])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e){throw new Error(e)},parse:function(e){function t(e){o.length=o.length-2*e,r.length=r.length-e,s.length=s.length-e}function i(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,o=[0],r=[null],s=[],a=this.table,l="",c=0,h=0,u=0,d=2,g=1;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var f=this.lexer.yylloc;s.push(f),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var p,m,v,A,w,C,E,F,y,b={};;){if(v=o[o.length-1],this.defaultActions[v]?A=this.defaultActions[v]:(null==p&&(p=i()),A=a[v]&&a[v][p]),"undefined"==typeof A||!A.length||!A[0]){if(!u){y=[];for(C in a[v])this.terminals_[C]&&C>2&&y.push("'"+this.terminals_[C]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+y.join(", ")+", got '"+this.terminals_[p]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:f,expected:y})}if(3==u){if(p==g)throw new Error(x||"Parsing halted.");h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,p=i()}for(;;){if(d.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=o[o.length-1]}m=p,p=d,v=o[o.length-1],A=a[v]&&a[v][d],u=3}if(A[0]instanceof Array&&A.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+p);switch(A[0]){case 1:o.push(p),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),o.push(A[1]),p=null,m?(p=m,m=null):(h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,u>0&&u--);break;case 2:if(E=this.productions_[A[1]][1],b.$=r[r.length-E],b._$={first_line:s[s.length-(E||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(E||1)].first_column,last_column:s[s.length-1].last_column},w=this.performAction.call(b,l,h,c,this.yy,A[1],r,s),"undefined"!=typeof w)return w;E&&(o=o.slice(0,-1*E*2),r=r.slice(0,-1*E),s=s.slice(0,-1*E)),o.push(this.productions_[A[1]][0]),r.push(b.$),s.push(b._$),F=a[o[o.length-2]][o[o.length-1]],o.push(F);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=o,t.parse=function(){return o.parse.apply(o,arguments)},t.main=function(n){if(!n[1])throw new Error("Usage: "+n[0]+" FILE");if("undefined"!=typeof e)var o=i(!function(){var e=new Error('Cannot find module "fs"');throw e.code="MODULE_NOT_FOUND",e}()).readFileSync(i(19).join(e.cwd(),n[1]),"utf8");else var r=i(!function(){var e=new Error('Cannot find module "file"');throw e.code="MODULE_NOT_FOUND",e}()).path(i(!function(){var e=new Error('Cannot find module "file"');throw e.code="MODULE_NOT_FOUND",e}()).cwd()),o=r.join(n[1]).read({charset:"utf-8"});return t.parser.parse(o)},"undefined"!=typeof n&&i.c[0]===n&&t.main("undefined"!=typeof e?e.argv.slice(1):i(!function(){var e=new Error('Cannot find module "system"');throw e.code="MODULE_NOT_FOUND",e}()).args)}).call(t,i(20),i(18)(e))},function(e){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){if(void 0===window.window||!window.document){window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console,window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;var chunks=id.split("/");if(!window.acequire.tlns)return console.log("unable to load "+id);chunks[0]=window.acequire.tlns[chunks[0]]||chunks[0];var path=chunks.join("/")+".js";return window.acequire.id=id,importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},window.initBaseUrls=function initBaseUrls(topLevelNamespaces){acequire.tlns=topLevelNamespaces},window.initSender=function initSender(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.command){if(!main[msg.command])throw Error("Unknown command:"+msg.command);main[msg.command].apply(main,msg.args)}else if(msg.init){initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}else msg.event&&sender&&sender._signal(msg.event,msg.data)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;"insertText"===delta.action?start.row===row&&column>=start.column?start.column===column&&this.$insertRight||(start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row)):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):"insertLines"===delta.action?start.row===row&&0===column&&this.$insertRight||row>=start.row&&(row+=end.row-start.row):"removeText"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):"removeLines"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(text){this.$lines=[],0===text.length?this.$lines=[""]:Array.isArray(text)?this._insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.getLine(range.start.row).substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row,range.end.row);lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;return range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this._insertLines(position.row,lines),position=this.insertInLine(position,lastLine||"")),position},this.insertLines=function(row,lines){return row>=this.getLength()?this.insert({row:row,column:0},"\\n"+lines.join("\\n")):this._insertLines(Math.max(row,0),lines)},this._insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};for(;lines.length>61440;){var end=this._insertLines(row,lines.slice(0,61440));lines=lines.slice(61440),row=end.row}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:"insertLines",range:range,lines:lines};return this._signal("change",{data:delta}),range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||"";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:"insertText",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._signal("change",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||"";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:"insertText",range:Range.fromPoints(position,end),text:text};return this._signal("change",{data:delta}),end},this.remove=function(range){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this._removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:"removeText",range:range,text:removed};return this._signal("change",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){return 0>firstRow||lastRow>=this.getLength()?this.remove(new Range(firstRow,0,lastRow+1,0)):this._removeLines(firstRow,lastRow)},this._removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:"removeLines",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._signal("change",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:"removeText",range:range,text:this.getNewLineCharacter()};this._signal("change",{data:delta})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);"insertLines"==delta.action?this.insertLines(range.start.row,delta.lines):"insertText"==delta.action?this.insert(range.start,delta.text):"removeLines"==delta.action?this._removeLines(range.start.row,range.end.row-1):"removeText"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);"insertLines"==delta.action?this._removeLines(range.start.row,range.end.row-1):"insertText"==delta.action?this.remove(range):"removeLines"==delta.action?this._insertLines(range.start.row,delta.lines):"removeText"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if("object"!=typeof obj||!obj)return obj;var cons=obj.constructor;if(cons===RegExp)return obj;var copy=cons();for(var key in obj)copy[key]="object"==typeof obj[key]?exports.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue();try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);return this.sender.emit("error",{row:pos.row,column:pos.column,text:e.message,type:"error"}),void 0}this.sender.emit("ok")}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;\nfor(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; - -},function(e){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,i){(function(e){function i(e,t){for(var i=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),i++):i&&(e.splice(n,1),i--)}if(t)for(;i--;i)e.unshift("..");return e}function n(e,t){if(e.filter)return e.filter(t);for(var i=[],n=0;n=-1&&!o;r--){var s=r>=0?arguments[r]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,o="/"===s.charAt(0))}return t=i(n(t.split("/"),function(e){return!!e}),!o).join("/"),(o?"/":"")+t||"."},t.normalize=function(e){var o=t.isAbsolute(e),r="/"===s(e,-1);return e=i(n(e.split("/"),function(e){return!!e}),!o).join("/"),e||o||(e="."),e&&r&&(e+="/"),(o?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(n(e,function(e){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,i){function n(e){for(var t=0;t=0&&""===e[i];i--);return t>i?[]:e.slice(t,i-t+1)}e=t.resolve(e).substr(1),i=t.resolve(i).substr(1);for(var o=n(e.split("/")),r=n(i.split("/")),s=Math.min(o.length,r.length),a=s,l=0;s>l;l++)if(o[l]!==r[l]){a=l;break}for(var c=[],l=a;lt&&(t=e.length+t),e.substr(t,i)}}).call(t,i(20))},function(e){function t(){if(!r){r=!0;for(var e,t=o.length;t;){e=o,o=[];for(var i=-1;++is;++s)n.append(e[s],o);else for(var s=0,a=e.length;a>s;++s)n.append(e[s]);return r?n.getBlob(r):n.getBlob()}}e.exports=i()}).call(t,function(){return this}())}])}); +},function(e){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t){(function(t){function i(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var i=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(e,t){var n=new i,o=t.endings,r=t.type;if(o)for(var s=0,a=e.length;a>s;++s)n.append(e[s],o);else for(var s=0,a=e.length;a>s;++s)n.append(e[s]);return r?n.getBlob(r):n.getBlob()}}e.exports=i()}).call(t,function(){return this}())}])}); //# sourceMappingURL=jsoneditor.map \ No newline at end of file diff --git a/package.json b/package.json index c61db04..3ba6fea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jsoneditor", - "version": "4.1.2", + "version": "4.1.3", "main": "./index", "description": "A web-based tool to view, edit and format JSON", "tags": [ @@ -22,7 +22,7 @@ }, "dependencies": { "brace": "^0.4.1", - "jsonlint": "^1.6.2" + "jsonlint": "josdejong/jsonlint#fb47330" }, "devDependencies": { "gulp": "^3.8.11", diff --git a/src/js/ace/index.js b/src/js/ace/index.js new file mode 100644 index 0000000..846ae0a --- /dev/null +++ b/src/js/ace/index.js @@ -0,0 +1,9 @@ +// load brace +var ace = require('brace'); + +// load required ace modules +require('brace/mode/json'); +require('brace/ext/searchbox'); +require('./theme-jsoneditor'); + +module.exports = ace; diff --git a/src/js/textmode.js b/src/js/textmode.js index 18253a0..e412b42 100644 --- a/src/js/textmode.js +++ b/src/js/textmode.js @@ -1,9 +1,6 @@ var ace; try { - ace = require('brace'); - require('brace/mode/json'); - require('brace/ext/searchbox'); - require('./ace/theme-jsoneditor'); + ace = require('./ace'); } catch (err) { // failed to load ace, no problem, we will fall back to plain text