diff --git a/dist/jsoneditor.css b/dist/jsoneditor.css index dfa0d76..38d7b44 100644 --- a/dist/jsoneditor.css +++ b/dist/jsoneditor.css @@ -1,6 +1,6 @@ -.jsoneditor .field, -.jsoneditor .value, -.jsoneditor .readonly { +div.jsoneditor-field, +div.jsoneditor-value, +div.jsoneditor-readonly { border: 1px solid transparent; min-height: 16px; min-width: 32px; @@ -12,106 +12,106 @@ /* adjust margin of p elements inside editable divs, needed for Opera, IE */ -.jsoneditor .field p, -.jsoneditor .value p { +div.jsoneditor-field p, +div.jsoneditor-value p { margin: 0; } -.jsoneditor .value { +div.jsoneditor-value { word-break: break-word; } -.jsoneditor .readonly { +div.jsoneditor-readonly { min-width: 16px; color: gray; } -.jsoneditor .empty { +div.jsoneditor-empty { border-color: lightgray; border-style: dashed; border-radius: 2px; } -.jsoneditor .field.empty::after, -.jsoneditor .value.empty::after { +div.jsoneditor-field.jsoneditor-empty::after, +div.jsoneditor-value.jsoneditor-empty::after { pointer-events: none; color: lightgray; font-size: 8pt; } -.jsoneditor .field.empty::after { +div.jsoneditor-field.jsoneditor-empty::after { content: "field"; } -.jsoneditor .value.empty::after { +div.jsoneditor-value.jsoneditor-empty::after { content: "value"; } -.jsoneditor .value.url { +div.jsoneditor-value.jsoneditor-url { color: green; text-decoration: underline; } -.jsoneditor a.value.url:hover, -.jsoneditor a.value.url:focus { +a.jsoneditor-value.jsoneditor-url:hover, +a.jsoneditor-value.jsoneditor-url:focus { color: #ee422e; } -.jsoneditor .separator { +div.jsoneditor td.jsoneditor-separator { padding: 3px 0; vertical-align: top; color: gray; } -.jsoneditor .field[contenteditable=true]:focus, -.jsoneditor .field[contenteditable=true]:hover, -.jsoneditor .value[contenteditable=true]:focus, -.jsoneditor .value[contenteditable=true]:hover, -.jsoneditor .field.highlight, -.jsoneditor .value.highlight { +div.jsoneditor-field[contenteditable=true]:focus, +div.jsoneditor-field[contenteditable=true]:hover, +div.jsoneditor-value[contenteditable=true]:focus, +div.jsoneditor-value[contenteditable=true]:hover, +div.jsoneditor-field.jsoneditor-highlight, +div.jsoneditor-value.jsoneditor-highlight { background-color: #FFFFAB; border: 1px solid yellow; border-radius: 2px; } -.jsoneditor .field.highlight-active, -.jsoneditor .field.highlight-active:focus, -.jsoneditor .field.highlight-active:hover, -.jsoneditor .value.highlight-active, -.jsoneditor .value.highlight-active:focus, -.jsoneditor .value.highlight-active:hover { +div.jsoneditor-field.jsoneditor-highlight-active, +div.jsoneditor-field.jsoneditor-highlight-active:focus, +div.jsoneditor-field.jsoneditor-highlight-active:hover, +div.jsoneditor-value.jsoneditor-highlight-active, +div.jsoneditor-value.jsoneditor-highlight-active:focus, +div.jsoneditor-value.jsoneditor-highlight-active:hover { background-color: #ffee00; border: 1px solid #ffc700; border-radius: 2px; } -.jsoneditor .value.string { +div.jsoneditor-value.jsoneditor-string { color: #008000; } -.jsoneditor .value.object, -.jsoneditor .value.array { +div.jsoneditor-value.jsoneditor-object, +div.jsoneditor-value.jsoneditor-array { min-width: 16px; color: #808080; } -.jsoneditor .value.number { +div.jsoneditor-value.jsoneditor-number { color: #ee422e; } -.jsoneditor .value.boolean { +div.jsoneditor-value.jsoneditor-boolean { color: #ff8c00; } -.jsoneditor .value.null { +div.jsoneditor-value.jsoneditor-null { color: #004ED0; } -.jsoneditor .value.invalid { +div.jsoneditor-value.jsoneditor-invalid { color: #000000; } -.jsoneditor div.tree button { +div.jsoneditor-tree button { width: 24px; height: 24px; padding: 0; @@ -121,34 +121,35 @@ background: transparent url("img/jsoneditor-icons.svg"); } -.jsoneditor.mode-view tr.expandable td.tree, -.jsoneditor.mode-form tr.expandable td.tree { +div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree, +div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree { cursor: pointer; } -.jsoneditor div.tree button.collapsed { +div.jsoneditor-tree button.jsoneditor-collapsed { background-position: 0 -48px; } -.jsoneditor div.tree button.expanded { +div.jsoneditor-tree button.jsoneditor-expanded { background-position: 0 -72px; } -.jsoneditor div.tree button.contextmenu { +div.jsoneditor-tree button.jsoneditor-contextmenu { background-position: -48px -72px; } -.jsoneditor div.tree button.contextmenu:hover, -.jsoneditor div.tree button.contextmenu:focus, -.jsoneditor div.tree button.contextmenu.selected { +div.jsoneditor-tree button.jsoneditor-contextmenu:hover, +div.jsoneditor-tree button.jsoneditor-contextmenu:focus, +div.jsoneditor-tree button.jsoneditor-contextmenu.selected, +tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu { background-position: -48px -48px; } -.jsoneditor div.tree *:focus { +div.jsoneditor-tree *:focus { outline: none; } -.jsoneditor div.tree button:focus { +div.jsoneditor-tree button:focus { /* TODO: nice outline for buttons with focus outline: #97B0F8 solid 2px; box-shadow: 0 0 8px #97B0F8; @@ -157,12 +158,12 @@ outline: #e5e5e5 solid 1px; } -.jsoneditor div.tree button.invisible { +div.jsoneditor-tree button.jsoneditor-invisible { visibility: hidden; background: none; } -.jsoneditor { +div.jsoneditor { color: #1A1A1A; border: 1px solid #3883fa; -moz-box-sizing: border-box; @@ -176,14 +177,14 @@ line-height: 100%; } -.jsoneditor div.tree table.tree { +div.jsoneditor-tree table.jsoneditor-tree { border-collapse: collapse; border-spacing: 0; width: 100%; margin: 0; } -.jsoneditor div.outer { +div.jsoneditor-outer { width: 100%; height: 100%; margin: -35px 0 0 0; @@ -194,14 +195,14 @@ overflow: hidden; } -.jsoneditor div.tree { +div.jsoneditor-tree { width: 100%; height: 100%; position: relative; overflow: auto; } -.jsoneditor textarea.text { +textarea.jsoneditor-text { width: 100%; height: 100%; margin: 0; @@ -214,52 +215,64 @@ resize: none; } -.jsoneditor tr.highlight { - background-color: #FFFFAB; +tr.jsoneditor-highlight, +tr.jsoneditor-selected { + background-color: #e6e6e6; } -.jsoneditor div.tree button.dragarea { +tr.jsoneditor-selected button.jsoneditor-dragarea, +tr.jsoneditor-selected button.jsoneditor-contextmenu { + visibility: hidden; +} + +tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea, +tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu { + visibility: visible; +} + +div.jsoneditor-tree button.jsoneditor-dragarea { background: url("img/jsoneditor-icons.svg") -72px -72px; cursor: move; } -.jsoneditor div.tree button.dragarea:hover, -.jsoneditor div.tree button.dragarea:focus { +div.jsoneditor-tree button.jsoneditor-dragarea:hover, +div.jsoneditor-tree button.jsoneditor-dragarea:focus, +tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea { background-position: -72px -48px; } -.jsoneditor tr, -.jsoneditor th, -.jsoneditor td { +div.jsoneditor tr, +div.jsoneditor th, +div.jsoneditor td { padding: 0; margin: 0; } -.jsoneditor td { +div.jsoneditor td { vertical-align: top; } -.jsoneditor td.tree { +div.jsoneditor td.jsoneditor-tree { vertical-align: top; } -.jsoneditor .field, -.jsoneditor .value, -.jsoneditor td, -.jsoneditor th, -.jsoneditor textarea { +div.jsoneditor-field, +div.jsoneditor-value, +div.jsoneditor td, +div.jsoneditor th, +div.jsoneditor textarea { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; font-size: 10pt; color: #1A1A1A; } /* ContextMenu - main menu */ -.jsoneditor-contextmenu { +div.jsoneditor-contextmenu { position: absolute; z-index: 99999; } -.jsoneditor-contextmenu ul { +div.jsoneditor-contextmenu ul { position: relative; left: 0; top: 0; @@ -272,7 +285,7 @@ padding: 0; } -.jsoneditor-contextmenu ul li button { +div.jsoneditor-contextmenu ul li button { padding: 0; margin: 0; width: 124px; @@ -287,30 +300,30 @@ /* Fix button padding in firefox */ -.jsoneditor-contextmenu ul li button::-moz-focus-inner { +div.jsoneditor-contextmenu ul li button::-moz-focus-inner { padding: 0; border: 0; } -.jsoneditor-contextmenu ul li button:hover, -.jsoneditor-contextmenu ul li button:focus { +div.jsoneditor-contextmenu ul li button:hover, +div.jsoneditor-contextmenu ul li button:focus { color: #1a1a1a; background-color: #f5f5f5; outline: none; } -.jsoneditor-contextmenu ul li button.default { +div.jsoneditor-contextmenu ul li button.jsoneditor-default { width: 92px; } -.jsoneditor-contextmenu ul li button.expand { +div.jsoneditor-contextmenu ul li button.jsoneditor-expand { float: right; width: 32px; height: 24px; border-left: 1px solid #e5e5e5; } -.jsoneditor-contextmenu div.icon { +div.jsoneditor-contextmenu div.jsoneditor-icon { float: left; width: 24px; height: 24px; @@ -320,7 +333,7 @@ background-image: url("img/jsoneditor-icons.svg"); } -.jsoneditor-contextmenu ul li button div.expand { +div.jsoneditor-contextmenu ul li button div.jsoneditor-expand { float: right; width: 24px; height: 24px; @@ -330,87 +343,89 @@ opacity: 0.4; } -.jsoneditor-contextmenu ul li button:hover div.expand, -.jsoneditor-contextmenu ul li button:focus div.expand, -.jsoneditor-contextmenu ul li.selected div.expand, -.jsoneditor-contextmenu ul li button.expand:hover div.expand, -.jsoneditor-contextmenu ul li button.expand:focus div.expand { +div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand, +div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand, +div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand, +div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand, +div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand { opacity: 1; } -.jsoneditor-contextmenu .separator { +div.jsoneditor-contextmenu div.jsoneditor-separator { height: 0; border-top: 1px solid #e5e5e5; padding-top: 5px; margin-top: 5px; } -.jsoneditor-contextmenu button.remove > .icon { +div.jsoneditor-contextmenu button.jsoneditor-remove > div.jsoneditor-icon { background-position: -24px -24px; } -.jsoneditor-contextmenu button.remove:hover > .icon, -.jsoneditor-contextmenu button.remove:focus > .icon { +div.jsoneditor-contextmenu button.jsoneditor-remove:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-remove:focus > div.jsoneditor-icon { background-position: -24px 0; } -.jsoneditor-contextmenu button.append > .icon { +div.jsoneditor-contextmenu button.jsoneditor-append > div.jsoneditor-icon { background-position: 0 -24px; } -.jsoneditor-contextmenu button.append:hover > .icon, -.jsoneditor-contextmenu button.append:focus > .icon { +div.jsoneditor-contextmenu button.jsoneditor-append:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-append:focus > div.jsoneditor-icon { background-position: 0 0; } -.jsoneditor-contextmenu button.insert > .icon { +div.jsoneditor-contextmenu button.jsoneditor-insert > div.jsoneditor-icon { background-position: 0 -24px; } -.jsoneditor-contextmenu button.insert:hover > .icon, -.jsoneditor-contextmenu button.insert:focus > .icon { +div.jsoneditor-contextmenu button.jsoneditor-insert:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-insert:focus > div.jsoneditor-icon { background-position: 0 0; } -.jsoneditor-contextmenu button.duplicate > .icon { +div.jsoneditor-contextmenu button.jsoneditor-duplicate > div.jsoneditor-icon { background-position: -48px -24px; } -.jsoneditor-contextmenu button.duplicate:hover > .icon, -.jsoneditor-contextmenu button.duplicate:focus > .icon { +div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus > div.jsoneditor-icon { background-position: -48px 0; } -.jsoneditor-contextmenu button.sort-asc > .icon { +div.jsoneditor-contextmenu button.jsoneditor-sort-asc > div.jsoneditor-icon { background-position: -168px -24px; } -.jsoneditor-contextmenu button.sort-asc:hover > .icon, -.jsoneditor-contextmenu button.sort-asc:focus > .icon { +div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus > div.jsoneditor-icon { background-position: -168px 0; } -.jsoneditor-contextmenu button.sort-desc > .icon { +div.jsoneditor-contextmenu button.jsoneditor-sort-desc > div.jsoneditor-icon { background-position: -192px -24px; } -.jsoneditor-contextmenu button.sort-desc:hover > .icon, -.jsoneditor-contextmenu button.sort-desc:focus > .icon { +div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus > div.jsoneditor-icon { background-position: -192px 0; } /* ContextMenu - sub menu */ -.jsoneditor-contextmenu ul li .selected { +div.jsoneditor-contextmenu ul li button.jsoneditor-selected, +div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover, +div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus { color: white; background-color: #ee422e; } -.jsoneditor-contextmenu ul li { +div.jsoneditor-contextmenu ul li { overflow: hidden; } -.jsoneditor-contextmenu ul li ul { +div.jsoneditor-contextmenu ul li ul { display: none; position: relative; left: -10px; @@ -427,61 +442,61 @@ -.jsoneditor-contextmenu ul li ul li button { +div.jsoneditor-contextmenu ul li ul li button { padding-left: 24px; animation: all ease-in-out 1s; } -.jsoneditor-contextmenu ul li ul li button:hover, -.jsoneditor-contextmenu ul li ul li button:focus { +div.jsoneditor-contextmenu ul li ul li button:hover, +div.jsoneditor-contextmenu ul li ul li button:focus { background-color: #f5f5f5; } -.jsoneditor-contextmenu button.type-string > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-string > div.jsoneditor-icon { background-position: -144px -24px; } -.jsoneditor-contextmenu button.type-string:hover > .icon, -.jsoneditor-contextmenu button.type-string:focus > .icon, -.jsoneditor-contextmenu button.type-string.selected > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-string:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-string:focus > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected > div.jsoneditor-icon { background-position: -144px 0; } -.jsoneditor-contextmenu button.type-auto > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-auto > div.jsoneditor-icon { background-position: -120px -24px; } -.jsoneditor-contextmenu button.type-auto:hover > .icon, -.jsoneditor-contextmenu button.type-auto:focus > .icon, -.jsoneditor-contextmenu button.type-auto.selected > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected > div.jsoneditor-icon { background-position: -120px 0; } -.jsoneditor-contextmenu button.type-object > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-object > div.jsoneditor-icon { background-position: -72px -24px; } -.jsoneditor-contextmenu button.type-object:hover > .icon, -.jsoneditor-contextmenu button.type-object:focus > .icon, -.jsoneditor-contextmenu button.type-object.selected > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-object:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-object:focus > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected > div.jsoneditor-icon { background-position: -72px 0; } -.jsoneditor-contextmenu button.type-array > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-array > div.jsoneditor-icon { background-position: -96px -24px; } -.jsoneditor-contextmenu button.type-array:hover > .icon, -.jsoneditor-contextmenu button.type-array:focus > .icon, -.jsoneditor-contextmenu button.type-array.selected > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-array:hover > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-array:focus > div.jsoneditor-icon, +div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected > div.jsoneditor-icon { background-position: -96px 0; } -.jsoneditor-contextmenu button.type-modes > .icon { +div.jsoneditor-contextmenu button.jsoneditor-type-modes > div.jsoneditor-icon { background-image: none; width: 6px; } -.jsoneditor .menu { +div.jsoneditor-menu { width: 100%; height: 35px; padding: 2px; @@ -495,7 +510,7 @@ border-bottom: 1px solid #3883fa; } -.jsoneditor .menu button { +div.jsoneditor-menu > button { width: 26px; height: 26px; margin: 2px; @@ -510,64 +525,64 @@ float: left; } -.jsoneditor .menu button:hover { +div.jsoneditor-menu > button:hover { background-color: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.4); } -.jsoneditor .menu button:focus, -.jsoneditor .menu button:active { +div.jsoneditor-menu > button:focus, +div.jsoneditor-menu > button:active { background-color: rgba(255,255,255,0.3); } -.jsoneditor .menu button:disabled { +div.jsoneditor-menu > button:disabled { opacity: 0.5; } -.jsoneditor .menu button.collapse-all { +div.jsoneditor-menu > button.jsoneditor-collapse-all { background-position: 0 -96px; } -.jsoneditor .menu button.expand-all { +div.jsoneditor-menu > button.jsoneditor-expand-all { background-position: 0 -120px; } -.jsoneditor .menu button.undo { +div.jsoneditor-menu > button.jsoneditor-undo { background-position: -24px -96px; } -.jsoneditor .menu button.undo:disabled { +div.jsoneditor-menu > button.jsoneditor-undo:disabled { background-position: -24px -120px; } -.jsoneditor .menu button.redo { +div.jsoneditor-menu > button.jsoneditor-redo { background-position: -48px -96px; } -.jsoneditor .menu button.redo:disabled { +div.jsoneditor-menu > button.jsoneditor-redo:disabled { background-position: -48px -120px; } -.jsoneditor .menu button.compact { +div.jsoneditor-menu > button.jsoneditor-compact { background-position: -72px -96px; } -.jsoneditor .menu button.format { +div.jsoneditor-menu > button.jsoneditor-format { background-position: -72px -120px; } -.jsoneditor .menu button.modes { +div.jsoneditor-menu > button.jsoneditor-modes { background-image: none; width: auto; padding-left: 6px; padding-right: 6px; } -.jsoneditor .menu button.separator { +div.jsoneditor-menu > button.jsoneditor-separator { margin-left: 10px; } -.jsoneditor .menu a { +div.jsoneditor-menu a { font-family: arial, sans-serif; font-size: 10pt; color: white; @@ -575,11 +590,11 @@ vertical-align: middle; } -.jsoneditor .menu a:hover { +div.jsoneditor-menu a:hover { opacity: 1; } -.jsoneditor .menu a.poweredBy { +div.jsoneditor-menu a.jsoneditor-poweredBy { font-size: 8pt; position: absolute; right: 0; @@ -588,8 +603,8 @@ } /* TODO: css for button:disabled is not supported by IE8 */ -.jsoneditor .search input, -.jsoneditor .search .results { +table.jsoneditor-search input, +table.jsoneditor-search div.jsoneditor-results { font-family: arial, sans-serif; font-size: 10pt; color: #1A1A1A; @@ -597,24 +612,24 @@ /* For Firefox */ } -.jsoneditor .search { +table.jsoneditor-search { position: absolute; right: 2px; top: 2px; } -.jsoneditor .search .frame { +table.jsoneditor-search div.jsoneditor-frame { border: 1px solid transparent; background-color: white; padding: 0 2px; margin: 0; } -.jsoneditor .search .frame table { +table.jsoneditor-search div.jsoneditor-frame table { border-collapse: collapse; } -.jsoneditor .search input { +table.jsoneditor-search input { width: 120px; border: none; outline: none; @@ -622,13 +637,13 @@ line-height: 20px; } -.jsoneditor .search .results { +table.jsoneditor-search .jsoneditor-results { color: #4d4d4d; padding-right: 5px; line-height: 24px; } -.jsoneditor .search button { +table.jsoneditor-search button { width: 16px; height: 24px; padding: 0; @@ -638,30 +653,30 @@ vertical-align: top; } -.jsoneditor .search button:hover { +table.jsoneditor-search button:hover { background-color: transparent; } -.jsoneditor .search button.refresh { +table.jsoneditor-search button.jsoneditor-refresh { width: 18px; background-position: -99px -73px; } -.jsoneditor .search button.next { +table.jsoneditor-search button.jsoneditor-next { cursor: pointer; background-position: -124px -73px; } -.jsoneditor .search button.next:hover { +table.jsoneditor-search button.jsoneditor-next:hover { background-position: -124px -49px; } -.jsoneditor .search button.previous { +table.jsoneditor-search button.jsoneditor-previous { cursor: pointer; background-position: -148px -73px; margin-right: 2px; } -.jsoneditor .search button.previous:hover { +table.jsoneditor-search button.jsoneditor-previous:hover { background-position: -148px -49px; } \ No newline at end of file diff --git a/dist/jsoneditor.js b/dist/jsoneditor.js index 7866f9f..9efb8aa 100644 --- a/dist/jsoneditor.js +++ b/dist/jsoneditor.js @@ -24,7 +24,7 @@ * * @author Jos de Jong, * @version 4.2.1 - * @date 2015-12-27 + * @date 2015-12-30 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -405,8 +405,9 @@ return /******/ (function(modules) { // webpackBootstrap var Highlighter = __webpack_require__(4); var History = __webpack_require__(5); var SearchBox = __webpack_require__(6); - var Node = __webpack_require__(7); - var modeswitcher = __webpack_require__(8); + var ContextMenu = __webpack_require__(7); + var Node = __webpack_require__(8); + var modeswitcher = __webpack_require__(9); var util = __webpack_require__(3); // create a mixin with the functions for tree mode @@ -439,6 +440,9 @@ return /******/ (function(modules) { // webpackBootstrap this.dom = {}; this.highlighter = new Highlighter(); this.selection = undefined; // will hold the last input selection + this.multiselection = { + nodes: [] + }; this._setOptions(options); @@ -782,6 +786,7 @@ return /******/ (function(modules) { // webpackBootstrap * {Element | undefined} dom The dom element * which has focus * {Range | TextRange} range A text selection + * {Node[]} nodes Nodes in case of multi selection * {Number} scrollTop Scroll position */ treemode.setSelection = function (selection) { @@ -793,6 +798,10 @@ return /******/ (function(modules) { // webpackBootstrap // TODO: animated scroll this.content.scrollTop = selection.scrollTop; } + if (selection.nodes) { + // multi-select + this.select(selection.nodes); + } if (selection.range) { util.setSelectionOffset(selection.range); } @@ -807,13 +816,20 @@ return /******/ (function(modules) { // webpackBootstrap * {Element | undefined} dom The dom element * which has focus * {Range | TextRange} range A text selection + * {Node[]} nodes Nodes in case of multi selection * {Number} scrollTop Scroll position */ treemode.getSelection = function () { + var range = util.getSelectionOffset(); + if (range && range.container.nodeName !== 'DIV') { // filter on (editable) divs) + range = null; + } + return { dom: domFocus, - scrollTop: this.content ? this.content.scrollTop : 0, - range: util.getSelectionOffset() + range: range, + nodes: this.multiselection.nodes.slice(0), + scrollTop: this.content ? this.content.scrollTop : 0 }; }; @@ -880,7 +896,7 @@ return /******/ (function(modules) { // webpackBootstrap treemode._createFrame = function () { // create the frame this.frame = document.createElement('div'); - this.frame.className = 'jsoneditor mode-' + this.options.mode; + this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; this.container.appendChild(this.frame); // create one global event listener to handle all events from all nodes @@ -919,12 +935,12 @@ return /******/ (function(modules) { // webpackBootstrap // create menu this.menu = document.createElement('div'); - this.menu.className = 'menu'; + this.menu.className = 'jsoneditor-menu'; this.frame.appendChild(this.menu); // create expand all button var expandAll = document.createElement('button'); - expandAll.className = 'expand-all'; + expandAll.className = 'jsoneditor-expand-all'; expandAll.title = 'Expand all fields'; expandAll.onclick = function () { editor.expandAll(); @@ -934,7 +950,7 @@ return /******/ (function(modules) { // webpackBootstrap // create expand all button var collapseAll = document.createElement('button'); collapseAll.title = 'Collapse all fields'; - collapseAll.className = 'collapse-all'; + collapseAll.className = 'jsoneditor-collapse-all'; collapseAll.onclick = function () { editor.collapseAll(); }; @@ -944,7 +960,7 @@ return /******/ (function(modules) { // webpackBootstrap if (this.history) { // create undo button var undo = document.createElement('button'); - undo.className = 'undo separator'; + undo.className = 'jsoneditor-undo jsoneditor-separator'; undo.title = 'Undo last action (Ctrl+Z)'; undo.onclick = function () { editor._onUndo(); @@ -954,7 +970,7 @@ return /******/ (function(modules) { // webpackBootstrap // create redo button var redo = document.createElement('button'); - redo.className = 'redo'; + redo.className = 'jsoneditor-redo'; redo.title = 'Redo (Ctrl+Shift+Z)'; redo.onclick = function () { editor._onRedo(); @@ -1021,22 +1037,262 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ treemode._onEvent = function (event) { - var target = event.target; - if (event.type == 'keydown') { this._onKeyDown(event); } if (event.type == 'focus') { - domFocus = target; + domFocus = event.target; + } + + if (event.type == 'mousedown') { + this._startDragDistance(event); + } + if (event.type == 'mousemove' || event.type == 'mouseup' || event.type == 'click') { + this._updateDragDistance(event); + } + + var node = Node.getNodeFromTarget(event.target); + + if (node && node.selected) { + if (event.type == 'click') { + if (event.target == node.dom.menu) { + this.showContextMenu(event.target); + + // stop propagation (else we will open the context menu of a single node) + return; + } + + // deselect a multi selection + if (!event.hasMoved) { + this.deselect(); + } + } + + if (event.type == 'mousedown') { + // drag multiple nodes + Node.onDragStart(this.multiselection.nodes, event); + } + } + else { + if (event.type == 'mousedown') { + this.deselect(); + + if (node && event.target == node.dom.drag) { + // drag a singe node + Node.onDragStart(node, event); + } + else if (!node || (event.target != node.dom.field && event.target != node.dom.value)) { + // select multiple nodes + this._onMultiSelectStart(event); + } + } } - var node = Node.getNodeFromTarget(target); if (node) { node.onEvent(event); } }; + treemode._startDragDistance = function (event) { + this.dragDistanceEvent = { + initialTarget: event.target, + initialPageX: event.pageX, + initialPageY: event.pageY, + dragDistance: 0, + hasMoved: false + }; + }; + + treemode._updateDragDistance = function (event) { + var diffX = event.pageX - this.dragDistanceEvent.initialPageX; + var diffY = event.pageY - this.dragDistanceEvent.initialPageY; + + this.dragDistanceEvent.dragDistance = Math.sqrt(diffX * diffX + diffY * diffY); + this.dragDistanceEvent.hasMoved = + this.dragDistanceEvent.hasMoved || this.dragDistanceEvent.dragDistance > 10; + + event.dragDistance = this.dragDistanceEvent.dragDistance; + event.hasMoved = this.dragDistanceEvent.hasMoved; + + return event.dragDistance; + }; + + /** + * Start multi selection of nodes by dragging the mouse + * @param event + * @private + */ + treemode._onMultiSelectStart = function (event) { + var node = Node.getNodeFromTarget(event.target); + + this.multiselection = { + start: node || null, + end: null, + nodes: [] + }; + + this._startDragDistance(event); + + var editor = this; + if (!this.mousemove) { + this.mousemove = util.addEventListener(window, 'mousemove', function (event) { + editor._onMultiSelect(event); + }); + } + if (!this.mouseup) { + this.mouseup = util.addEventListener(window, 'mouseup', function (event ) { + editor._onMultiSelectEnd(event); + }); + } + + }; + + /** + * Multiselect nodes by dragging + * @param event + * @private + */ + treemode._onMultiSelect = function (event) { + event.preventDefault(); + + this._updateDragDistance(event); + if (!event.hasMoved) { + return; + } + + var node = Node.getNodeFromTarget(event.target); + + if (node) { + if (this.multiselection.start == null) { + this.multiselection.start = node; + } + this.multiselection.end = node; + } + + // deselect previous selection + this.deselect(); + + // find the selected nodes in the range from first to last + var start = this.multiselection.start; + var end = this.multiselection.end || this.multiselection.start; + if (start && end) { + // find the top level childs, all having the same parent + this.multiselection.nodes = this._findTopLevelNodes(start, end); + this.select(this.multiselection.nodes); + } + }; + + /** + * End of multiselect nodes by dragging + * @param event + * @private + */ + treemode._onMultiSelectEnd = function (event) { + // set focus to the context menu button of the first node + if (this.multiselection.nodes[0]) { + this.multiselection.nodes[0].dom.menu.focus(); + } + + this.multiselection.start = null; + this.multiselection.end = null; + + // cleanup global event listeners + if (this.mousemove) { + util.removeEventListener(window, 'mousemove', this.mousemove); + delete this.mousemove; + } + if (this.mouseup) { + util.removeEventListener(window, 'mouseup', this.mouseup); + delete this.mouseup; + } + }; + + /** + * deselect currently selected nodes + * @param {boolean} [clearStartAndEnd=false] If true, the `start` and `end` + * state is cleared too. + */ + treemode.deselect = function (clearStartAndEnd) { + this.multiselection.nodes.forEach(function (node) { + node.setSelected(false); + }); + this.multiselection.nodes = []; + + if (clearStartAndEnd) { + this.multiselection.start = null; + this.multiselection.end = null; + } + }; + + /** + * select nodes + * @param {Node[] | Node} nodes + */ + treemode.select = function (nodes) { + if (!Array.isArray(nodes)) { + return this.select([nodes]); + } + + if (nodes) { + this.deselect(); + + this.multiselection.nodes = nodes.slice(0); + + var first = nodes[0]; + nodes.forEach(function (node) { + node.setSelected(true, node === first); + }); + } + }; + + /** + * From two arbitrary selected nodes, find their shared parent node. + * From that parent node, select the two child nodes in the brances going to + * nodes `start` and `end`, and select all childs in between. + * @param {Node} start + * @param {Node} end + * @return {Array.} Returns an ordered list with child nodes + * @private + */ + treemode._findTopLevelNodes = function (start, end) { + var startPath = start.getPath(); + var endPath = end.getPath(); + var i = 0; + while (i < startPath.length && startPath[i] === endPath[i]) { + i++; + } + var root = startPath[i - 1]; + var startChild = startPath[i]; + var endChild = endPath[i]; + + if (!startChild || !endChild) { + if (root.parent) { + // startChild is a parent of endChild or vice versa + startChild = root; + endChild = root; + root = root.parent + } + else { + // we have selected the root node (which doesn't have a parent) + startChild = root.childs[0]; + endChild = root.childs[root.childs.length - 1]; + } + } + + if (root && startChild && endChild) { + var startIndex = root.childs.indexOf(startChild); + var endIndex = root.childs.indexOf(endChild); + var firstIndex = Math.min(startIndex, endIndex); + var lastIndex = Math.max(startIndex, endIndex); + + return root.childs.slice(firstIndex, lastIndex + 1); + } + else { + return []; + } + }; + /** * Event handler for keydown. Handles shortcut keys * @param {Event} event @@ -1101,15 +1357,15 @@ return /******/ (function(modules) { // webpackBootstrap */ treemode._createTable = function () { var contentOuter = document.createElement('div'); - contentOuter.className = 'outer'; + contentOuter.className = 'jsoneditor-outer'; this.contentOuter = contentOuter; this.content = document.createElement('div'); - this.content.className = 'tree'; + this.content.className = 'jsoneditor-tree'; contentOuter.appendChild(this.content); this.table = document.createElement('table'); - this.table.className = 'tree'; + this.table.className = 'jsoneditor-tree'; this.content.appendChild(this.table); // create colgroup where the first two columns don't have a fixed @@ -1134,6 +1390,42 @@ return /******/ (function(modules) { // webpackBootstrap this.frame.appendChild(contentOuter); }; + /** + * Show a contextmenu for this node. + * Used for multiselection + * @param {HTMLElement} anchor Anchor element to attache the context menu to. + * @param {function} [onClose] Callback method called when the context menu + * is being closed. + */ + treemode.showContextMenu = function (anchor, onClose) { + var items = []; + var editor = this; + + // create duplicate button + items.push({ + text: 'Duplicate', + title: 'Duplicate selected fields (Ctrl+D)', + className: 'jsoneditor-duplicate', + click: function () { + Node.onDuplicate(editor.multiselection.nodes); + } + }); + + // create remove button + items.push({ + text: 'Remove', + title: 'Remove selected fields (Ctrl+Del)', + className: 'jsoneditor-remove', + click: function () { + Node.onRemove(editor.multiselection.nodes); + } + }); + + var menu = new ContextMenu(items, {close: onClose}); + menu.show(anchor); + }; + + // define modes module.exports = [ { @@ -1165,7 +1457,7 @@ return /******/ (function(modules) { // webpackBootstrap // failed to load ace, no problem, we will fall back to plain text } - var modeswitcher = __webpack_require__(8); + var modeswitcher = __webpack_require__(9); var util = __webpack_require__(3); // create a mixin with the functions for text mode @@ -1231,7 +1523,7 @@ return /******/ (function(modules) { // webpackBootstrap this.height = container.clientHeight; this.frame = document.createElement('div'); - this.frame.className = 'jsoneditor mode-' + this.options.mode; + this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; this.frame.onclick = function (event) { // prevent default submit action when the editor is located inside a form event.preventDefault(); @@ -1242,12 +1534,12 @@ return /******/ (function(modules) { // webpackBootstrap // create menu this.menu = document.createElement('div'); - this.menu.className = 'menu'; + this.menu.className = 'jsoneditor-menu'; this.frame.appendChild(this.menu); // create format button var buttonFormat = document.createElement('button'); - buttonFormat.className = 'format'; + buttonFormat.className = 'jsoneditor-format'; buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\)'; this.menu.appendChild(buttonFormat); buttonFormat.onclick = function () { @@ -1261,7 +1553,7 @@ return /******/ (function(modules) { // webpackBootstrap // create compact button var buttonCompact = document.createElement('button'); - buttonCompact.className = 'compact'; + buttonCompact.className = 'jsoneditor-compact'; buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)'; this.menu.appendChild(buttonCompact); buttonCompact.onclick = function () { @@ -1281,7 +1573,7 @@ return /******/ (function(modules) { // webpackBootstrap } this.content = document.createElement('div'); - this.content.className = 'outer'; + this.content.className = 'jsoneditor-outer'; this.frame.appendChild(this.content); this.container.appendChild(this.frame); @@ -1323,7 +1615,7 @@ return /******/ (function(modules) { // webpackBootstrap poweredBy.appendChild(document.createTextNode('powered by ace')); poweredBy.href = 'http://ace.ajax.org'; poweredBy.target = '_blank'; - poweredBy.className = 'poweredBy'; + poweredBy.className = 'jsoneditor-poweredBy'; poweredBy.onclick = function () { // TODO: this anchor falls below the margin of the content, // therefore the normal a.href does not work. We use a click event @@ -1340,7 +1632,7 @@ return /******/ (function(modules) { // webpackBootstrap else { // load a plain text textarea var textarea = document.createElement('textarea'); - textarea.className = 'text'; + textarea.className = 'jsoneditor-text'; textarea.spellcheck = false; this.content.appendChild(textarea); this.textarea = textarea; @@ -1523,7 +1815,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 3 */ /***/ function(module, exports, __webpack_require__) { - var jsonlint = __webpack_require__(9); + var jsonlint = __webpack_require__(11); /** * Parse JSON using the parser built-in in the browser. @@ -2276,48 +2568,6 @@ return /******/ (function(modules) { // webpackBootstrap params.node.updateValue(params.newValue); } }, - 'appendNode': { - 'undo': function (params) { - params.parent.removeChild(params.node); - }, - 'redo': function (params) { - params.parent.appendChild(params.node); - } - }, - 'insertBeforeNode': { - 'undo': function (params) { - params.parent.removeChild(params.node); - }, - 'redo': function (params) { - params.parent.insertBefore(params.node, params.beforeNode); - } - }, - 'insertAfterNode': { - 'undo': function (params) { - params.parent.removeChild(params.node); - }, - 'redo': function (params) { - params.parent.insertAfter(params.node, params.afterNode); - } - }, - 'removeNode': { - 'undo': function (params) { - var parent = params.parent; - var beforeNode = parent.childs[params.index] || parent.append; - parent.insertBefore(params.node, beforeNode); - }, - 'redo': function (params) { - params.parent.removeChild(params.node); - } - }, - 'duplicateNode': { - 'undo': function (params) { - params.parent.removeChild(params.clone); - }, - 'redo': function (params) { - params.parent.insertAfter(params.clone, params.node); - } - }, 'changeType': { 'undo': function (params) { params.node.changeType(params.oldType); @@ -2326,14 +2576,86 @@ return /******/ (function(modules) { // webpackBootstrap params.node.changeType(params.newType); } }, - 'moveNode': { + + 'appendNodes': { 'undo': function (params) { - params.startParent.moveTo(params.node, params.startIndex); + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); }, 'redo': function (params) { - params.endParent.moveTo(params.node, params.endIndex); + params.nodes.forEach(function (node) { + params.parent.appendChild(node); + }); } }, + 'insertBeforeNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.insertBefore(node, params.beforeNode); + }); + } + }, + 'insertAfterNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + var afterNode = params.afterNode; + params.nodes.forEach(function (node) { + params.parent.insertAfter(params.node, afterNode); + afterNode = node; + }); + } + }, + 'removeNodes': { + 'undo': function (params) { + var parent = params.parent; + var beforeNode = parent.childs[params.index] || parent.append; + params.nodes.forEach(function (node) { + parent.insertBefore(node, beforeNode); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + } + }, + 'duplicateNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + var afterNode = params.afterNode; + params.nodes.forEach(function (node) { + params.parent.insertAfter(node, afterNode); + afterNode = node; + }); + } + }, + 'moveNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.oldBeforeNode.parent.moveBefore(node, params.oldBeforeNode); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.newBeforeNode.parent.moveBefore(node, params.newBeforeNode); + }); + } + }, + 'sort': { 'undo': function (params) { var node = params.node; @@ -2495,7 +2817,7 @@ return /******/ (function(modules) { // webpackBootstrap var table = document.createElement('table'); this.dom.table = table; - table.className = 'search'; + table.className = 'jsoneditor-search'; container.appendChild(table); var tbody = document.createElement('tbody'); this.dom.tbody = tbody; @@ -2507,14 +2829,14 @@ return /******/ (function(modules) { // webpackBootstrap tr.appendChild(td); var results = document.createElement('div'); this.dom.results = results; - results.className = 'results'; + results.className = 'jsoneditor-results'; td.appendChild(results); td = document.createElement('td'); tr.appendChild(td); var divInput = document.createElement('div'); this.dom.input = divInput; - divInput.className = 'frame'; + divInput.className = 'jsoneditor-frame'; divInput.title = 'Search fields and values'; td.appendChild(divInput); @@ -2527,7 +2849,7 @@ return /******/ (function(modules) { // webpackBootstrap tbodySearch.appendChild(tr); var refreshSearch = document.createElement('button'); - refreshSearch.className = 'refresh'; + refreshSearch.className = 'jsoneditor-refresh'; td = document.createElement('td'); td.appendChild(refreshSearch); tr.appendChild(td); @@ -2557,7 +2879,7 @@ return /******/ (function(modules) { // webpackBootstrap var searchNext = document.createElement('button'); searchNext.title = 'Next result (Enter)'; - searchNext.className = 'next'; + searchNext.className = 'jsoneditor-next'; searchNext.onclick = function () { searchBox.next(); }; @@ -2567,7 +2889,7 @@ return /******/ (function(modules) { // webpackBootstrap var searchPrevious = document.createElement('button'); searchPrevious.title = 'Previous result (Shift+Enter)'; - searchPrevious.className = 'previous'; + searchPrevious.className = 'jsoneditor-previous'; searchPrevious.onclick = function () { searchBox.previous(); }; @@ -2776,7 +3098,456 @@ return /******/ (function(modules) { // webpackBootstrap /* 7 */ /***/ function(module, exports, __webpack_require__) { - var ContextMenu = __webpack_require__(11); + 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 = 'jsoneditor-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 = 'jsoneditor-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 = 'jsoneditor-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 += ' jsoneditor-default'; + + var buttonExpand = document.createElement('button'); + domItem.buttonExpand = buttonExpand; + buttonExpand.className = 'jsoneditor-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 = 'jsoneditor-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 = 'jsoneditor-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, 'jsoneditor-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, 'jsoneditor-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 == 'jsoneditor-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 == 'jsoneditor-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 == 'jsoneditor-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 == 'jsoneditor-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; + + +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { + + var ContextMenu = __webpack_require__(7); var appendNodeFactory = __webpack_require__(12); var util = __webpack_require__(3); @@ -2825,7 +3596,7 @@ return /******/ (function(modules) { // webpackBootstrap var editable = this.editor.options.onEditable({ field: this.field, value: this.value, - path: this.path() + path: this.getFieldsPath() }); if (typeof editable === 'boolean') { @@ -2844,7 +3615,7 @@ return /******/ (function(modules) { // webpackBootstrap * Get the path of this node * @return {String[]} Array containing the path to this node */ - Node.prototype.path = function () { + Node.prototype.getFieldsPath = function () { var node = this; var path = []; while (node) { @@ -2857,6 +3628,15 @@ return /******/ (function(modules) { // webpackBootstrap return path; }; + /** + * Get the index of this node: the index in the list of childs where this + * node is part of + * @return {number} Returns the index, or -1 if this is the root node + */ + Node.prototype.getIndex = function () { + return this.parent ? this.parent.childs.indexOf(this) : -1; + }; + /** * Set parent node * @param {Node} parent @@ -3008,6 +3788,16 @@ return /******/ (function(modules) { // webpackBootstrap return (this.parent ? this.parent.getLevel() + 1 : 0); }; + /** + * Get path of the root node till the current node + * @return {Node[]} Returns an array with nodes + */ + Node.prototype.getPath = function() { + var path = this.parent ? this.parent.getPath() : []; + path.push(this); + return path; + }; + /** * Create a clone of a node * The complete state of a clone is copied, including whether it is expanded or @@ -3055,7 +3845,7 @@ return /******/ (function(modules) { // webpackBootstrap // set this node expanded this.expanded = true; if (this.dom.expand) { - this.dom.expand.className = 'expanded'; + this.dom.expand.className = 'jsoneditor-expanded'; } this.showChilds(); @@ -3089,7 +3879,7 @@ return /******/ (function(modules) { // webpackBootstrap // make this node collapsed if (this.dom.expand) { - this.dom.expand.className = 'collapsed'; + this.dom.expand.className = 'jsoneditor-collapsed'; } this.expanded = false; }; @@ -3520,26 +4310,6 @@ return /******/ (function(modules) { // webpackBootstrap this._getDomField(false); }; - /** - * Duplicate given child node - * new structure will be added right before the cloned node - * @param {Node} node the childNode to be duplicated - * @return {Node} clone the clone of the node - * @private - */ - Node.prototype._duplicate = function(node) { - var clone = node.clone(); - - /* TODO: adjust the field name (to prevent equal field names) - if (this.type == 'object') { - } - */ - - this.insertAfter(clone, node); - - return clone; - }; - /** * Check if given node is a child. The method will check recursively to find * this node. @@ -3625,6 +4395,7 @@ return /******/ (function(modules) { // webpackBootstrap delete node.searchValue; var removedNode = this.childs.splice(index, 1)[0]; + removedNode.parent = null; this.updateDom({'updateIndexes': true}); @@ -3801,30 +4572,30 @@ return /******/ (function(modules) { // webpackBootstrap Node.prototype._updateDomValue = function () { var domValue = this.dom.value; if (domValue) { - var classNames = ['value']; + var classNames = ['jsoneditor-value']; // set text color depending on value type var value = this.value; var type = (this.type == 'auto') ? util.type(value) : this.type; var isUrl = type == 'string' && util.isUrl(value); - classNames.push(type); + classNames.push('jsoneditor-' + type); if (isUrl) { - classNames.push('url'); + classNames.push('jsoneditor-url'); } // visual styling when empty var isEmpty = (String(this.value) == '' && this.type != 'array' && this.type != 'object'); if (isEmpty) { - classNames.push('empty'); + classNames.push('jsoneditor-empty'); } // highlight when there is a search result if (this.searchValueActive) { - classNames.push('highlight-active'); + classNames.push('jsoneditor-highlight-active'); } if (this.searchValue) { - classNames.push('highlight'); + classNames.push('jsoneditor-highlight'); } domValue.className = classNames.join(' '); @@ -3859,24 +4630,24 @@ return /******/ (function(modules) { // webpackBootstrap // make backgound color lightgray when empty var isEmpty = (String(this.field) == '' && this.parent.type != 'array'); if (isEmpty) { - util.addClassName(domField, 'empty'); + util.addClassName(domField, 'jsoneditor-empty'); } else { - util.removeClassName(domField, 'empty'); + util.removeClassName(domField, 'jsoneditor-empty'); } // highlight when there is a search result if (this.searchFieldActive) { - util.addClassName(domField, 'highlight-active'); + util.addClassName(domField, 'jsoneditor-highlight-active'); } else { - util.removeClassName(domField, 'highlight-active'); + util.removeClassName(domField, 'jsoneditor-highlight-active'); } if (this.searchField) { - util.addClassName(domField, 'highlight'); + util.addClassName(domField, 'jsoneditor-highlight'); } else { - util.removeClassName(domField, 'highlight'); + util.removeClassName(domField, 'jsoneditor-highlight'); } // strip formatting from the contents of the editable div @@ -3956,7 +4727,7 @@ return /******/ (function(modules) { // webpackBootstrap if (this.parent) { var domDrag = document.createElement('button'); dom.drag = domDrag; - domDrag.className = 'dragarea'; + domDrag.className = 'jsoneditor-dragarea'; domDrag.title = 'Drag to move this field (Alt+Shift+Arrows)'; tdDrag.appendChild(domDrag); } @@ -3967,7 +4738,7 @@ return /******/ (function(modules) { // webpackBootstrap var tdMenu = document.createElement('td'); var menu = document.createElement('button'); dom.menu = menu; - menu.className = 'contextmenu'; + menu.className = 'jsoneditor-contextmenu'; menu.title = 'Click to open the actions menu (Ctrl+M)'; tdMenu.appendChild(dom.menu); dom.tr.appendChild(tdMenu); @@ -3986,32 +4757,47 @@ return /******/ (function(modules) { // webpackBootstrap /** * DragStart event, fired on mousedown on the dragarea at the left side of a Node + * @param {Node[] | Node} nodes * @param {Event} event - * @private */ - Node.prototype._onDragStart = function (event) { - var node = this; - if (!this.mousemove) { - this.mousemove = util.addEventListener(document, 'mousemove', - function (event) { - node._onDrag(event); - }); + Node.onDragStart = function (nodes, event) { + if (!Array.isArray(nodes)) { + return Node.onDragStart([nodes], event); + } + if (nodes.length === 0) { + return; } - if (!this.mouseup) { - this.mouseup = util.addEventListener(document, 'mouseup', - function (event ) { - node._onDragEnd(event); - }); + var firstNode = nodes[0]; + var lastNode = nodes[nodes.length - 1]; + var draggedNode = Node.getNodeFromTarget(event.target); + var beforeNode = lastNode._nextSibling(); + var editor = firstNode.editor; + + // in case of multiple selected nodes, offsetY prevents the selection from + // jumping when you start dragging one of the lower down nodes in the selection + var offsetY = util.getAbsoluteTop(draggedNode.dom.tr) - util.getAbsoluteTop(firstNode.dom.tr); + + if (!editor.mousemove) { + editor.mousemove = util.addEventListener(window, 'mousemove', function (event) { + Node.onDrag(nodes, event); + }); } - this.editor.highlighter.lock(); - this.drag = { - 'oldCursor': document.body.style.cursor, - 'startParent': this.parent, - 'startIndex': this.parent.childs.indexOf(this), - 'mouseX': event.pageX, - 'level': this.getLevel() + if (!editor.mouseup) { + editor.mouseup = util.addEventListener(window, 'mouseup',function (event ) { + Node.onDragEnd(nodes, event); + }); + } + + editor.highlighter.lock(); + editor.drag = { + oldCursor: document.body.style.cursor, + oldSelection: editor.getSelection(), + oldBeforeNode: beforeNode, + mouseX: event.pageX, + offsetY: offsetY, + level: firstNode.getLevel() }; document.body.style.cursor = 'move'; @@ -4020,14 +4806,21 @@ return /******/ (function(modules) { // webpackBootstrap /** * Drag event, fired when moving the mouse while dragging a Node + * @param {Node[] | Node} nodes * @param {Event} event - * @private */ - Node.prototype._onDrag = function (event) { - // TODO: this method has grown too large. Split it in a number of methods - var mouseY = event.pageY; - var mouseX = event.pageX; + Node.onDrag = function (nodes, event) { + if (!Array.isArray(nodes)) { + return Node.onDrag([nodes], event); + } + if (nodes.length === 0) { + return; + } + // TODO: this method has grown too large. Split it in a number of methods + var editor = nodes[0].editor; + var mouseY = event.pageY - editor.drag.offsetY; + var mouseX = event.pageX; var trThis, trPrev, trNext, trFirst, trLast, trRoot; var nodePrev, nodeNext; var topThis, topPrev, topFirst, heightThis, bottomNext, heightNext; @@ -4036,7 +4829,8 @@ return /******/ (function(modules) { // webpackBootstrap // TODO: add an ESC option, which resets to the original position // move up/down - trThis = this.dom.tr; + var firstNode = nodes[0]; + trThis = firstNode.dom.tr; topThis = util.getAbsoluteTop(trThis); heightThis = trThis.offsetHeight; if (mouseY < topThis) { @@ -4058,7 +4852,7 @@ return /******/ (function(modules) { // webpackBootstrap trRoot = trThis.parentNode.firstChild; trPrev = trRoot ? trRoot.nextSibling : undefined; nodePrev = Node.getNodeFromTarget(trPrev); - if (nodePrev == this) { + if (nodePrev == firstNode) { nodePrev = undefined; } } @@ -4073,13 +4867,16 @@ return /******/ (function(modules) { // webpackBootstrap } if (nodePrev) { - nodePrev.parent.moveBefore(this, nodePrev); + nodes.forEach(function (node) { + nodePrev.parent.moveBefore(node, nodePrev); + }); moved = true; } } else { // move down - trLast = (this.expanded && this.append) ? this.append.getDom() : this.dom.tr; + var lastNode = nodes[nodes.length - 1]; + trLast = (lastNode.expanded && lastNode.append) ? lastNode.append.getDom() : lastNode.dom.tr; trFirst = trLast ? trLast.nextSibling : undefined; if (trFirst) { topFirst = util.getAbsoluteTop(trFirst); @@ -4091,11 +4888,12 @@ return /******/ (function(modules) { // webpackBootstrap util.getAbsoluteTop(trNext.nextSibling) : 0; heightNext = trNext ? (bottomNext - topFirst) : 0; - if (nodeNext.parent.childs.length == 1 && nodeNext.parent.childs[0] == this) { + if (nodeNext.parent.childs.length == nodes.length && + nodeNext.parent.childs[nodes.length - 1] == lastNode) { // We are about to remove the last child of this parent, // which will make the parents appendNode visible. - topThis += 24 - 1; - // TODO: dangerous to suppose the height of the appendNode a constant of 24-1 px. + topThis += 27; + // TODO: dangerous to suppose the height of the appendNode a constant of 27 px. } } @@ -4105,22 +4903,26 @@ return /******/ (function(modules) { // webpackBootstrap if (nodeNext && nodeNext.parent) { // calculate the desired level - var diffX = (mouseX - this.drag.mouseX); + var diffX = (mouseX - editor.drag.mouseX); var diffLevel = Math.round(diffX / 24 / 2); - var level = this.drag.level + diffLevel; // desired level + var level = editor.drag.level + diffLevel; // desired level var levelNext = nodeNext.getLevel(); // level to be // find the best fitting level (move upwards over the append nodes) trPrev = nodeNext.dom.tr.previousSibling; while (levelNext < level && trPrev) { nodePrev = Node.getNodeFromTarget(trPrev); - if (nodePrev == this || nodePrev._isChildOf(this)) { - // neglect itself and its childs + + var isDraggedNode = nodes.some(function (node) { + return node === nodePrev || nodePrev._isChildOf(node); + }); + + if (isDraggedNode) { + // neglect the dragged nodes themselves and their childs } else if (nodePrev instanceof AppendNode) { var childs = nodePrev.parent.childs; - if (childs.length > 1 || - (childs.length == 1 && childs[0] != this)) { + if (childs.length != nodes.length || childs[nodes.length - 1] != lastNode) { // non-visible append node of a list of childs // consisting of not only this node (else the // append node will change into a visible "empty" @@ -4141,7 +4943,9 @@ return /******/ (function(modules) { // webpackBootstrap // move the node when its position is changed if (trLast.nextSibling != nodeNext.dom.tr) { - nodeNext.parent.moveBefore(this, nodeNext); + nodes.forEach(function (node) { + nodeNext.parent.moveBefore(node, nodeNext); + }); moved = true; } } @@ -4150,49 +4954,73 @@ return /******/ (function(modules) { // webpackBootstrap if (moved) { // update the dragging parameters when moved - this.drag.mouseX = mouseX; - this.drag.level = this.getLevel(); + editor.drag.mouseX = mouseX; + editor.drag.level = firstNode.getLevel(); } // auto scroll when hovering around the top of the editor - this.editor.startAutoScroll(mouseY); + editor.startAutoScroll(mouseY); event.preventDefault(); }; /** * Drag event, fired on mouseup after having dragged a node + * @param {Node[] | Node} nodes * @param {Event} event - * @private */ - Node.prototype._onDragEnd = function (event) { - var params = { - 'node': this, - 'startParent': this.drag.startParent, - 'startIndex': this.drag.startIndex, - 'endParent': this.parent, - 'endIndex': this.parent.childs.indexOf(this) - }; - if ((params.startParent != params.endParent) || - (params.startIndex != params.endIndex)) { - // only register this action if the node is actually moved to another place - this.editor._onAction('moveNode', params); + Node.onDragEnd = function (nodes, event) { + if (!Array.isArray(nodes)) { + return Node.onDrag([nodes], event); + } + if (nodes.length === 0) { + return; } - document.body.style.cursor = this.drag.oldCursor; - this.editor.highlighter.unlock(); - delete this.drag; + var firstNode = nodes[0]; + var editor = firstNode.editor; + var parent = firstNode.parent; + var firstIndex = parent.childs.indexOf(firstNode); + var beforeNode = parent.childs[firstIndex + nodes.length] || parent.append; - if (this.mousemove) { - util.removeEventListener(document, 'mousemove', this.mousemove); - delete this.mousemove;} - if (this.mouseup) { - util.removeEventListener(document, 'mouseup', this.mouseup); - delete this.mouseup; + // set focus to the context menu button of the first node + if (nodes[0]) { + nodes[0].dom.menu.focus(); + } + + var params = { + nodes: nodes, + oldSelection: editor.drag.oldSelection, + newSelection: editor.getSelection(), + oldBeforeNode: editor.drag.oldBeforeNode, + newBeforeNode: beforeNode + }; + + if (params.oldBeforeNode != params.newBeforeNode) { + // only register this action if the node is actually moved to another place + editor._onAction('moveNodes', params); + } + + document.body.style.cursor = editor.drag.oldCursor; + editor.highlighter.unlock(); + nodes.forEach(function (node) { + if (event.target !== node.dom.drag && event.target !== node.dom.menu) { + editor.highlighter.unhighlight(); + } + }); + delete editor.drag; + + if (editor.mousemove) { + util.removeEventListener(window, 'mousemove', editor.mousemove); + delete editor.mousemove; + } + if (editor.mouseup) { + util.removeEventListener(window, 'mouseup', editor.mouseup); + delete editor.mouseup; } // Stop any running auto scroll - this.editor.stopAutoScroll(); + editor.stopAutoScroll(); event.preventDefault(); }; @@ -4231,7 +5059,12 @@ return /******/ (function(modules) { // webpackBootstrap */ Node.prototype.setHighlight = function (highlight) { if (this.dom.tr) { - this.dom.tr.className = (highlight ? 'highlight' : ''); + if (highlight) { + util.addClassName(this.dom.tr, 'jsoneditor-highlight'); + } + else { + util.removeClassName(this.dom.tr, 'jsoneditor-highlight'); + } if (this.append) { this.append.setHighlight(highlight); @@ -4245,6 +5078,41 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** + * Select or deselect a node + * @param {boolean} selected + * @param {boolean} [isFirst] + */ + Node.prototype.setSelected = function (selected, isFirst) { + this.selected = selected; + + if (this.dom.tr) { + if (selected) { + util.addClassName(this.dom.tr, 'jsoneditor-selected'); + } + else { + util.removeClassName(this.dom.tr, 'jsoneditor-selected'); + } + + if (isFirst) { + util.addClassName(this.dom.tr, 'jsoneditor-first'); + } + else { + util.removeClassName(this.dom.tr, 'jsoneditor-first'); + } + + if (this.append) { + this.append.setSelected(selected); + } + + if (this.childs) { + this.childs.forEach(function (child) { + child.setSelected(selected); + }); + } + } + }; + /** * Update the value of the node. Only primitive types are allowed, no Object * or Array is allowed. @@ -4288,11 +5156,11 @@ return /******/ (function(modules) { // webpackBootstrap // parent is an object domField.contentEditable = this.editable.field; domField.spellcheck = false; - domField.className = 'field'; + domField.className = 'jsoneditor-field'; } else { // parent is an array this is the root node - domField.className = 'readonly'; + domField.className = 'jsoneditor-readonly'; } var field; @@ -4317,15 +5185,15 @@ return /******/ (function(modules) { // webpackBootstrap var count = this.childs ? this.childs.length : 0; if (this.type == 'array') { domValue.innerHTML = '[' + count + ']'; - this.dom.tr.className = 'expandable'; + util.addClassName(this.dom.tr, 'jsoneditor-expandable'); } else if (this.type == 'object') { domValue.innerHTML = '{' + count + '}'; - this.dom.tr.className = 'expandable'; + util.addClassName(this.dom.tr, 'jsoneditor-expandable'); } else { domValue.innerHTML = this._escapeHTML(this.value); - this.dom.tr.className = ''; + util.removeClassName(this.dom.tr, 'jsoneditor-expandable'); } } @@ -4431,13 +5299,13 @@ return /******/ (function(modules) { // webpackBootstrap // create expand button var expand = document.createElement('button'); if (this._hasChilds()) { - expand.className = this.expanded ? 'expanded' : 'collapsed'; + expand.className = this.expanded ? 'jsoneditor-expanded' : 'jsoneditor-collapsed'; expand.title = 'Click to expand/collapse this field (Ctrl+E). \n' + 'Ctrl+Click to expand/collapse including all childs.'; } else { - expand.className = 'invisible'; + expand.className = 'jsoneditor-invisible'; expand.title = ''; } @@ -4455,14 +5323,14 @@ return /******/ (function(modules) { // webpackBootstrap var domTree = document.createElement('table'); var tbody = document.createElement('tbody'); domTree.style.borderCollapse = 'collapse'; // TODO: put in css - domTree.className = 'values'; + domTree.className = 'jsoneditor-values'; domTree.appendChild(tbody); var tr = document.createElement('tr'); tbody.appendChild(tr); // create expand button var tdExpand = document.createElement('td'); - tdExpand.className = 'tree'; + tdExpand.className = 'jsoneditor-tree'; tr.appendChild(tdExpand); dom.expand = this._createDomExpandButton(); tdExpand.appendChild(dom.expand); @@ -4470,7 +5338,7 @@ return /******/ (function(modules) { // webpackBootstrap // create the field var tdField = document.createElement('td'); - tdField.className = 'tree'; + tdField.className = 'jsoneditor-tree'; tr.appendChild(tdField); dom.field = this._createDomField(); tdField.appendChild(dom.field); @@ -4478,17 +5346,17 @@ return /******/ (function(modules) { // webpackBootstrap // create a separator var tdSeparator = document.createElement('td'); - tdSeparator.className = 'tree'; + tdSeparator.className = 'jsoneditor-tree'; tr.appendChild(tdSeparator); if (this.type != 'object' && this.type != 'array') { tdSeparator.appendChild(document.createTextNode(':')); - tdSeparator.className = 'separator'; + tdSeparator.className = 'jsoneditor-separator'; } dom.tdSeparator = tdSeparator; // create the value var tdValue = document.createElement('td'); - tdValue.className = 'tree'; + tdValue.className = 'jsoneditor-tree'; tr.appendChild(tdValue); dom.value = this._createDomValue(); tdValue.appendChild(dom.value); @@ -4520,19 +5388,14 @@ return /******/ (function(modules) { // webpackBootstrap } } - // drag events - if (type == 'mousedown' && target == dom.drag) { - this._onDragStart(event); - } - // context menu events if (type == 'click' && target == dom.menu) { var highlighter = node.editor.highlighter; highlighter.highlight(node); highlighter.lock(); - util.addClassName(dom.menu, 'selected'); + util.addClassName(dom.menu, 'jsoneditor-selected'); this.showContextMenu(dom.menu, function () { - util.removeClassName(dom.menu, 'selected'); + util.removeClassName(dom.menu, 'jsoneditor-selected'); highlighter.unlock(); highlighter.unhighlight(); }); @@ -4645,37 +5508,31 @@ return /******/ (function(modules) { // webpackBootstrap // focus // when clicked in whitespace left or right from the field or value, set focus var domTree = dom.tree; - if (target == domTree.parentNode) { - switch (type) { - case 'click': - var left = (event.offsetX != undefined) ? - (event.offsetX < (this.getLevel() + 1) * 24) : - (event.pageX < util.getAbsoluteLeft(dom.tdSeparator));// for FF - if (left || expandable) { - // node is expandable when it is an object or array - if (domField) { - util.setEndOfContentEditable(domField); - domField.focus(); - } - } - else { - if (domValue) { - util.setEndOfContentEditable(domValue); - domValue.focus(); - } - } - break; + if (target == domTree.parentNode && + type == 'click' && !event.hasMoved) { + var left = (event.offsetX != undefined) ? + (event.offsetX < (this.getLevel() + 1) * 24) : + (event.pageX < util.getAbsoluteLeft(dom.tdSeparator));// for FF + if (left || expandable) { + // node is expandable when it is an object or array + if (domField) { + util.setEndOfContentEditable(domField); + domField.focus(); + } + } + else { + if (domValue) { + util.setEndOfContentEditable(domValue); + domValue.focus(); + } } } if ((target == dom.tdExpand && !expandable) || target == dom.tdField || - target == dom.tdSeparator) { - switch (type) { - case 'click': - if (domField) { - util.setEndOfContentEditable(domField); - domField.focus(); - } - break; + target == dom.tdSeparator && + type == 'click' && !event.hasMoved) { + if (domField) { + util.setEndOfContentEditable(domField); + domField.focus(); } } @@ -4697,6 +5554,15 @@ return /******/ (function(modules) { // webpackBootstrap var handled = false; var prevNode, nextNode, nextDom, nextDom2; var editable = this.editor.options.mode === 'tree'; + var oldSelection; + var oldBeforeNode; + var nodes; + var multiselection; + var selectedNodes = this.editor.multiselection.nodes.length > 0 + ? this.editor.multiselection.nodes + : [this]; + var firstNode = selectedNodes[0]; + var lastNode = selectedNodes[selectedNodes.length - 1]; // util.log(ctrlKey, keynum, event.charCode); // TODO: cleanup if (keynum == 13) { // Enter @@ -4720,7 +5586,7 @@ return /******/ (function(modules) { // webpackBootstrap } else if (keynum == 68) { // D if (ctrlKey && editable) { // Ctrl+D - this._onDuplicate(); + Node.onDuplicate(selectedNodes); handled = true; } } @@ -4739,7 +5605,7 @@ return /******/ (function(modules) { // webpackBootstrap } else if (keynum == 46 && editable) { // Del if (ctrlKey) { // Ctrl+Del - this._onRemove(); + Node.onRemove(selectedNodes); handled = true; } } @@ -4756,9 +5622,9 @@ return /******/ (function(modules) { // webpackBootstrap else if (keynum == 35) { // End if (altKey) { // Alt+End // find the last node - var lastNode = this._lastNode(); - if (lastNode) { - lastNode.focus(Node.focusElement || this._getElementName(target)); + var endNode = this._lastNode(); + if (endNode) { + endNode.focus(Node.focusElement || this._getElementName(target)); } handled = true; } @@ -4766,9 +5632,9 @@ return /******/ (function(modules) { // webpackBootstrap else if (keynum == 36) { // Home if (altKey) { // Alt+Home // find the first node - var firstNode = this._firstNode(); - if (firstNode) { - firstNode.focus(Node.focusElement || this._getElementName(target)); + var homeNode = this._firstNode(); + if (homeNode) { + homeNode.focus(Node.focusElement || this._getElementName(target)); } handled = true; } @@ -4782,13 +5648,13 @@ return /******/ (function(modules) { // webpackBootstrap } handled = true; } - else if (altKey && shiftKey && editable) { // Alt + Shift Arrow left - if (this.expanded) { - var appendDom = this.getAppend(); + else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow left + if (lastNode.expanded) { + var appendDom = lastNode.getAppend(); nextDom = appendDom ? appendDom.nextSibling : undefined; } else { - var dom = this.getDom(); + var dom = lastNode.getDom(); nextDom = dom.nextSibling; } if (nextDom) { @@ -4796,10 +5662,23 @@ return /******/ (function(modules) { // webpackBootstrap nextDom2 = nextDom.nextSibling; nextNode2 = Node.getNodeFromTarget(nextDom2); if (nextNode && nextNode instanceof AppendNode && - !(this.parent.childs.length == 1) && + !(lastNode.parent.childs.length == 1) && nextNode2 && nextNode2.parent) { - nextNode2.parent.moveBefore(this, nextNode2); + oldSelection = this.editor.getSelection(); + oldBeforeNode = lastNode._nextSibling(); + + selectedNodes.forEach(function (node) { + nextNode2.parent.moveBefore(node, nextNode2); + }); this.focus(Node.focusElement || this._getElementName(target)); + + this.editor._onAction('moveNodes', { + nodes: selectedNodes, + oldBeforeNode: oldBeforeNode, + newBeforeNode: nextNode2, + oldSelection: oldSelection, + newSelection: this.editor.getSelection() + }); } } } @@ -4809,16 +5688,44 @@ return /******/ (function(modules) { // webpackBootstrap // find the previous node prevNode = this._previousNode(); if (prevNode) { + this.editor.deselect(true); prevNode.focus(Node.focusElement || this._getElementName(target)); } handled = true; } + else if (!altKey && shiftKey) { // Shift + Arrow Up + // select multiple nodes + prevNode = this._previousNode(); + if (prevNode) { + multiselection = this.editor.multiselection; + multiselection.start = multiselection.start || this; + multiselection.end = prevNode; + nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end); + + this.editor.select(nodes); + prevNode.focus('field'); // select field as we know this always exists + } + handled = true; + } else if (altKey && shiftKey) { // Alt + Shift + Arrow Up // find the previous node - prevNode = this._previousNode(); + prevNode = firstNode._previousNode(); if (prevNode && prevNode.parent) { - prevNode.parent.moveBefore(this, prevNode); + oldSelection = this.editor.getSelection(); + oldBeforeNode = lastNode._nextSibling(); + + selectedNodes.forEach(function (node) { + prevNode.parent.moveBefore(node, prevNode); + }); this.focus(Node.focusElement || this._getElementName(target)); + + this.editor._onAction('moveNodes', { + nodes: selectedNodes, + oldBeforeNode: oldBeforeNode, + newBeforeNode: prevNode, + oldSelection: oldSelection, + newSelection: this.editor.getSelection() + }); } handled = true; } @@ -4832,16 +5739,29 @@ return /******/ (function(modules) { // webpackBootstrap } handled = true; } - else if (altKey && shiftKey) { // Alt + Shift Arrow Right - dom = this.getDom(); + else if (altKey && shiftKey) { // Alt + Shift + Arrow Right + dom = firstNode.getDom(); var prevDom = dom.previousSibling; if (prevDom) { prevNode = Node.getNodeFromTarget(prevDom); if (prevNode && prevNode.parent && (prevNode instanceof AppendNode) && !prevNode.isVisible()) { - prevNode.parent.moveBefore(this, prevNode); + oldSelection = this.editor.getSelection(); + oldBeforeNode = lastNode._nextSibling(); + + selectedNodes.forEach(function (node) { + prevNode.parent.moveBefore(node, prevNode); + }); this.focus(Node.focusElement || this._getElementName(target)); + + this.editor._onAction('moveNodes', { + nodes: selectedNodes, + oldBeforeNode: oldBeforeNode, + newBeforeNode: prevNode, + oldSelection: oldSelection, + newSelection: this.editor.getSelection() + }); } } } @@ -4851,29 +5771,50 @@ return /******/ (function(modules) { // webpackBootstrap // find the next node nextNode = this._nextNode(); if (nextNode) { + this.editor.deselect(true); nextNode.focus(Node.focusElement || this._getElementName(target)); } handled = true; } + else if (!altKey && shiftKey) { // Shift + Arrow Down + // select multiple nodes + nextNode = this._nextNode(); + if (nextNode) { + multiselection = this.editor.multiselection; + multiselection.start = multiselection.start || this; + multiselection.end = nextNode; + nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end); + + this.editor.select(nodes); + nextNode.focus('field'); // select field as we know this always exists + } + handled = true; + } else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Down // find the 2nd next node and move before that one - if (this.expanded) { - nextNode = this.append ? this.append._nextNode() : undefined; + if (lastNode.expanded) { + nextNode = lastNode.append ? lastNode.append._nextNode() : undefined; } else { - nextNode = this._nextNode(); + nextNode = lastNode._nextNode(); } - nextDom = nextNode ? nextNode.getDom() : undefined; - if (this.parent.childs.length == 1) { - nextDom2 = nextDom; - } - else { - nextDom2 = nextDom ? nextDom.nextSibling : undefined; - } - var nextNode2 = Node.getNodeFromTarget(nextDom2); + var nextNode2 = nextNode && (nextNode._nextNode() || nextNode.parent.append); if (nextNode2 && nextNode2.parent) { - nextNode2.parent.moveBefore(this, nextNode2); + oldSelection = this.editor.getSelection(); + oldBeforeNode = lastNode._nextSibling(); + + selectedNodes.forEach(function (node) { + nextNode2.parent.moveBefore(node, nextNode2); + }); this.focus(Node.focusElement || this._getElementName(target)); + + this.editor._onAction('moveNodes', { + nodes: selectedNodes, + oldBeforeNode: oldBeforeNode, + newBeforeNode: nextNode2, + oldSelection: oldSelection, + newSelection: this.editor.getSelection() + }); } handled = true; } @@ -4914,57 +5855,87 @@ return /******/ (function(modules) { // webpackBootstrap }; /** - * Remove this node - * @private + * Remove nodes + * @param {Node[] | Node} nodes */ - Node.prototype._onRemove = function() { - this.editor.highlighter.unhighlight(); - var childs = this.parent.childs; - var index = childs.indexOf(this); - - // adjust the focus - var oldSelection = this.editor.getSelection(); - if (childs[index + 1]) { - childs[index + 1].focus(); + Node.onRemove = function(nodes) { + if (!Array.isArray(nodes)) { + return Node.onRemove([nodes]); } - else if (childs[index - 1]) { - childs[index - 1].focus(); - } - else { - this.parent.focus(); - } - var newSelection = this.editor.getSelection(); - // remove the node - this.parent._remove(this); + if (nodes && nodes.length > 0) { + var firstNode = nodes[0]; + var parent = firstNode.parent; + var editor = firstNode.editor; + var firstIndex = firstNode.getIndex(); + editor.highlighter.unhighlight(); - // store history action - this.editor._onAction('removeNode', { - node: this, - parent: this.parent, - index: index, - oldSelection: oldSelection, - newSelection: newSelection - }); + // adjust the focus + var oldSelection = editor.getSelection(); + Node.blurNodes(nodes); + var newSelection = editor.getSelection(); + + // remove the nodes + nodes.forEach(function (node) { + node.parent._remove(node); + }); + + // store history action + editor._onAction('removeNodes', { + nodes: nodes.slice(0), // store a copy of the array! + parent: parent, + index: firstIndex, + oldSelection: oldSelection, + newSelection: newSelection + }); + } }; - /** - * Duplicate this node - * @private - */ - Node.prototype._onDuplicate = function() { - var oldSelection = this.editor.getSelection(); - var clone = this.parent._duplicate(this); - clone.focus(); - var newSelection = this.editor.getSelection(); - this.editor._onAction('duplicateNode', { - node: this, - clone: clone, - parent: this.parent, - oldSelection: oldSelection, - newSelection: newSelection - }); + /** + * Duplicate nodes + * duplicated nodes will be added right after the original nodes + * @param {Node[] | Node} nodes + */ + Node.onDuplicate = function(nodes) { + if (!Array.isArray(nodes)) { + return Node.onDuplicate([nodes]); + } + + if (nodes && nodes.length > 0) { + var lastNode = nodes[nodes.length - 1]; + var parent = lastNode.parent; + var editor = lastNode.editor; + + editor.deselect(editor.multiselection.nodes); + + // duplicate the nodes + var oldSelection = editor.getSelection(); + var afterNode = lastNode; + var clones = nodes.map(function (node) { + var clone = node.clone(); + parent.insertAfter(clone, afterNode); + afterNode = clone; + return clone; + }); + + // set selection to the duplicated nodes + if (nodes.length === 1) { + clones[0].focus(); + } + else { + editor.select(clones); + } + var newSelection = editor.getSelection(); + + editor._onAction('duplicateNodes', { + afterNode: lastNode, + nodes: clones, + parent: parent, + oldSelection: oldSelection, + newSelection: newSelection + }); + } }; /** @@ -4988,8 +5959,8 @@ return /******/ (function(modules) { // webpackBootstrap newNode.focus('field'); var newSelection = this.editor.getSelection(); - this.editor._onAction('insertBeforeNode', { - node: newNode, + this.editor._onAction('insertBeforeNodes', { + nodes: [newNode], beforeNode: this, parent: this.parent, oldSelection: oldSelection, @@ -5018,8 +5989,8 @@ return /******/ (function(modules) { // webpackBootstrap newNode.focus('field'); var newSelection = this.editor.getSelection(); - this.editor._onAction('insertAfterNode', { - node: newNode, + this.editor._onAction('insertAfterNodes', { + nodes: [newNode], afterNode: this, parent: this.parent, oldSelection: oldSelection, @@ -5048,8 +6019,8 @@ return /******/ (function(modules) { // webpackBootstrap newNode.focus('field'); var newSelection = this.editor.getSelection(); - this.editor._onAction('appendNode', { - node: newNode, + this.editor._onAction('appendNodes', { + nodes: [newNode], parent: this.parent, oldSelection: oldSelection, newSelection: newSelection @@ -5145,6 +6116,42 @@ return /******/ (function(modules) { // webpackBootstrap return undefined; }; + /** + * Remove the focus of given nodes, and move the focus to the (a) node before, + * (b) the node after, or (c) the parent node. + * @param {Array. | Node} nodes + */ + Node.blurNodes = function (nodes) { + if (!Array.isArray(nodes)) { + Node.blurNodes([nodes]); + return; + } + + var firstNode = nodes[0]; + var parent = firstNode.parent; + var firstIndex = firstNode.getIndex(); + + if (parent.childs[firstIndex + nodes.length]) { + parent.childs[firstIndex + nodes.length].focus(); + } + else if (parent.childs[firstIndex - 1]) { + parent.childs[firstIndex - 1].focus(); + } + else { + parent.focus(); + } + }; + + /** + * Get the next sibling of current node + * @return {Node} nextSibling + * @private + */ + Node.prototype._nextSibling = function () { + var index = this.parent.childs.indexOf(this); + return this.parent.childs[index + 1] || this.parent.append; + }; + /** * Get the previously rendered node * @return {Node | null} previousNode @@ -5343,12 +6350,12 @@ return /******/ (function(modules) { // webpackBootstrap items.push({ text: 'Type', title: 'Change the type of this field', - className: 'type-' + this.type, + className: 'jsoneditor-type-' + this.type, submenu: [ { text: 'Auto', - className: 'type-auto' + - (this.type == 'auto' ? ' selected' : ''), + className: 'jsoneditor-type-auto' + + (this.type == 'auto' ? ' jsoneditor-selected' : ''), title: titles.auto, click: function () { node._onChangeType('auto'); @@ -5356,8 +6363,8 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'Array', - className: 'type-array' + - (this.type == 'array' ? ' selected' : ''), + className: 'jsoneditor-type-array' + + (this.type == 'array' ? ' jsoneditor-selected' : ''), title: titles.array, click: function () { node._onChangeType('array'); @@ -5365,8 +6372,8 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'Object', - className: 'type-object' + - (this.type == 'object' ? ' selected' : ''), + className: 'jsoneditor-type-object' + + (this.type == 'object' ? ' jsoneditor-selected' : ''), title: titles.object, click: function () { node._onChangeType('object'); @@ -5374,8 +6381,8 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'String', - className: 'type-string' + - (this.type == 'string' ? ' selected' : ''), + className: 'jsoneditor-type-string' + + (this.type == 'string' ? ' jsoneditor-selected' : ''), title: titles.string, click: function () { node._onChangeType('string'); @@ -5390,14 +6397,14 @@ return /******/ (function(modules) { // webpackBootstrap items.push({ text: 'Sort', title: 'Sort the childs of this ' + this.type, - className: 'sort-' + direction, + className: 'jsoneditor-sort-' + direction, click: function () { node._onSort(direction); }, submenu: [ { text: 'Ascending', - className: 'sort-asc', + className: 'jsoneditor-sort-asc', title: 'Sort the childs of this ' + this.type + ' in ascending order', click: function () { node._onSort('asc'); @@ -5405,7 +6412,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'Descending', - className: 'sort-desc', + className: 'jsoneditor-sort-desc', title: 'Sort the childs of this ' + this.type +' in descending order', click: function () { node._onSort('desc'); @@ -5430,14 +6437,14 @@ return /******/ (function(modules) { // webpackBootstrap text: 'Append', title: 'Append a new field with type \'auto\' after this field (Ctrl+Shift+Ins)', submenuTitle: 'Select the type of the field to be appended', - className: 'append', + className: 'jsoneditor-append', click: function () { node._onAppend('', '', 'auto'); }, submenu: [ { text: 'Auto', - className: 'type-auto', + className: 'jsoneditor-type-auto', title: titles.auto, click: function () { node._onAppend('', '', 'auto'); @@ -5445,7 +6452,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'Array', - className: 'type-array', + className: 'jsoneditor-type-array', title: titles.array, click: function () { node._onAppend('', []); @@ -5453,7 +6460,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'Object', - className: 'type-object', + className: 'jsoneditor-type-object', title: titles.object, click: function () { node._onAppend('', {}); @@ -5461,7 +6468,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'String', - className: 'type-string', + className: 'jsoneditor-type-string', title: titles.string, click: function () { node._onAppend('', '', 'string'); @@ -5476,14 +6483,14 @@ return /******/ (function(modules) { // webpackBootstrap text: 'Insert', title: 'Insert a new field with type \'auto\' before this field (Ctrl+Ins)', submenuTitle: 'Select the type of the field to be inserted', - className: 'insert', + className: 'jsoneditor-insert', click: function () { node._onInsertBefore('', '', 'auto'); }, submenu: [ { text: 'Auto', - className: 'type-auto', + className: 'jsoneditor-type-auto', title: titles.auto, click: function () { node._onInsertBefore('', '', 'auto'); @@ -5491,7 +6498,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'Array', - className: 'type-array', + className: 'jsoneditor-type-array', title: titles.array, click: function () { node._onInsertBefore('', []); @@ -5499,7 +6506,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'Object', - className: 'type-object', + className: 'jsoneditor-type-object', title: titles.object, click: function () { node._onInsertBefore('', {}); @@ -5507,7 +6514,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { text: 'String', - className: 'type-string', + className: 'jsoneditor-type-string', title: titles.string, click: function () { node._onInsertBefore('', '', 'string'); @@ -5521,9 +6528,9 @@ return /******/ (function(modules) { // webpackBootstrap items.push({ text: 'Duplicate', title: 'Duplicate this field (Ctrl+D)', - className: 'duplicate', + className: 'jsoneditor-duplicate', click: function () { - node._onDuplicate(); + Node.onDuplicate(node); } }); @@ -5531,9 +6538,9 @@ return /******/ (function(modules) { // webpackBootstrap items.push({ text: 'Remove', title: 'Remove this field (Ctrl+Del)', - className: 'remove', + className: 'jsoneditor-remove', click: function () { - node._onRemove(); + Node.onRemove(node); } }); } @@ -5687,10 +6694,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 8 */ +/* 9 */ /***/ function(module, exports, __webpack_require__) { - var ContextMenu = __webpack_require__(11); + var ContextMenu = __webpack_require__(7); /** * Create a select box to be used in the editor menu's, which allows to switch mode @@ -5765,7 +6772,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Unknown mode "' + mode + '"'); } - item.className = 'type-modes' + ((current == mode) ? ' selected' : ''); + item.className = 'jsoneditor-type-modes' + ((current == mode) ? ' jsoneditor-selected' : ''); items.push(item); } @@ -5778,7 +6785,7 @@ return /******/ (function(modules) { // webpackBootstrap // create the html element var box = document.createElement('button'); - box.className = 'modes separator'; + box.className = 'jsoneditor-modes jsoneditor-separator'; box.innerHTML = currentTitle + ' ▾'; box.title = 'Switch editor mode'; box.onclick = function () { @@ -5793,7 +6800,22 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 9 */ +/* 10 */ +/***/ 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; + + +/***/ }, +/* 11 */ /***/ function(module, exports, __webpack_require__) { /* Jison generated parser */ @@ -6215,476 +7237,12 @@ return /******/ (function(modules) { // webpackBootstrap exports.parse = jsonlint.parse.bind(jsonlint); } -/***/ }, -/* 10 */ -/***/ 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; - - -/***/ }, -/* 11 */ -/***/ 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; - - /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(3); - var ContextMenu = __webpack_require__(11); + var ContextMenu = __webpack_require__(7); /** * A factory function to create an AppendNode, which depends on a Node @@ -6735,7 +7293,7 @@ return /******/ (function(modules) { // webpackBootstrap var tdMenu = document.createElement('td'); dom.tdMenu = tdMenu; var menu = document.createElement('button'); - menu.className = 'contextmenu'; + menu.className = 'jsoneditor-contextmenu'; menu.title = 'Click to open the actions menu (Ctrl+M)'; dom.menu = menu; tdMenu.appendChild(dom.menu); @@ -6745,7 +7303,7 @@ return /******/ (function(modules) { // webpackBootstrap var tdAppend = document.createElement('td'); var domText = document.createElement('div'); domText.innerHTML = '(empty)'; - domText.className = 'readonly'; + domText.className = 'jsoneditor-readonly'; tdAppend.appendChild(domText); dom.td = tdAppend; dom.text = domText; @@ -6822,14 +7380,14 @@ return /******/ (function(modules) { // webpackBootstrap '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', + 'className': 'jsoneditor-insert', 'click': function () { node._onAppend('', '', 'auto'); }, 'submenu': [ { 'text': 'Auto', - 'className': 'type-auto', + 'className': 'jsoneditor-type-auto', 'title': titles.auto, 'click': function () { node._onAppend('', '', 'auto'); @@ -6837,7 +7395,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { 'text': 'Array', - 'className': 'type-array', + 'className': 'jsoneditor-type-array', 'title': titles.array, 'click': function () { node._onAppend('', []); @@ -6845,7 +7403,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { 'text': 'Object', - 'className': 'type-object', + 'className': 'jsoneditor-type-object', 'title': titles.object, 'click': function () { node._onAppend('', {}); @@ -6853,7 +7411,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { 'text': 'String', - 'className': 'type-string', + 'className': 'jsoneditor-type-string', 'title': titles.string, 'click': function () { node._onAppend('', '', 'string'); @@ -6892,9 +7450,9 @@ return /******/ (function(modules) { // webpackBootstrap var highlighter = this.editor.highlighter; highlighter.highlight(this.parent); highlighter.lock(); - util.addClassName(dom.menu, 'selected'); + util.addClassName(dom.menu, 'jsoneditor-selected'); this.showContextMenu(dom.menu, function () { - util.removeClassName(dom.menu, 'selected'); + util.removeClassName(dom.menu, 'jsoneditor-selected'); highlighter.unlock(); highlighter.unhighlight(); }); diff --git a/dist/jsoneditor.map b/dist/jsoneditor.map index b70eccb..3a7c9a7 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","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","treemode","textmode","modes","prototype","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","err","onModeChange","_onError","getMode","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","log","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","searchBox","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","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","disabled","canUndo","canRedo","modeBox","type","_onKeyDown","getNodeFromTarget","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","select","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","ace","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","window","open","on","spellcheck","destroy","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","setValue","jsonlint","jsonString","validate","jsString","curr","charAt","prev","prevIsBrace","ii","cc","skipComment","parseString","quote","chars","push","parseKey","specialValues","key","regexp","test","match","join","replace","charCodeAt","toString","slice","a","b","args","apply","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","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","path","unshift","setParent","getField","_getDomField","childValue","_getType","childField","arr","_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","classNames","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","html","substring","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","code","form","view","item","currentMode","currentTitle","box","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","hash","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","_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","bind","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","acequire","isDark","cssClass","cssText","importCssString","exportAce","ns","global","packaged","original","ACE_NAMESPACE","acequirejs","deps","payload","payloads","_acequire","parentId","lookup","l","dep","packagedModule","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","exception","toInteger","floor","that","TypeError","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","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","scrollbarWidth","inner","minWidth","outer","position","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","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","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,186,187,188,189,190,191,192,219,220,221,222,111,106,"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","OSKey","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","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","_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","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","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","onTouchMove","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","t","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","right","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","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","message","reportError","msg","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","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","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","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","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","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","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","getCurrentTokenPosition","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","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","$id","applyDelta","docLines","delta","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","to","chunk","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","lineDif","consumePoint","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","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","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","$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","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","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","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","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","inVirtualSelectionMode","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","totalDiff","rangeIndex","subRows","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","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","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","idx4","classToUse","space","output","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$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","v","$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","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","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","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","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","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","hidden","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","version","JsonHighlightRules","MatchingBraceOutdent","openBracePos","context","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","selected","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","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 +{"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","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","treemode","textmode","modes","prototype","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","err","onModeChange","_onError","getMode","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","modeswitcher","dom","highlighter","selection","undefined","multiselection","nodes","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","focusNode","domFocus","log","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","searchBox","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","modeBox","type","_onKeyDown","_startDragDistance","_updateDragDistance","getNodeFromTarget","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getPath","endPath","startChild","endChild","parent","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","ace","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","open","on","spellcheck","destroy","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","setValue","jsonlint","jsonString","validate","jsString","curr","charAt","prev","prevIsBrace","ii","cc","skipComment","parseString","quote","chars","parseKey","specialValues","key","regexp","test","match","join","replace","charCodeAt","toString","a","b","args","apply","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","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","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","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","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","visibleSubmenu","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","windowHeight","innerHeight","windowScroll","windowBottom","anchorHeight","offsetHeight","menuHeight","body","mousedown","_isChildOf","mousewheel","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","e","expanded","setField","fieldEditable","appendNodeFactory","_updateEditability","path","getFieldsPath","unshift","getIndex","setParent","getField","_getDomField","childValue","_getType","childField","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","concat","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","str","domValue","classNames","isEmpty","count","domField","oldField","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","n","_createDomField","isFirst","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","tdValue","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","map","newNode","_onAppend","_onChangeType","_onSort","direction","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","substring","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","code","form","view","currentMode","currentTitle","box","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","hash","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","_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","bind","trAppend","tdAppend","domText","paddingLeft","acequire","isDark","cssClass","cssText","importCssString","exportAce","ns","global","packaged","original","ACE_NAMESPACE","acequirejs","deps","payload","payloads","_acequire","parentId","lookup","l","dep","packagedModule","normalizeModule","moduleName","chunks","base","mod","uri","req","returnValue","getNativeFlags","regex","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","x","r2","source","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","floor","that","TypeError","bound","result","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","pos","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","filter","every","reduce","reduceRight","sought","lastIndexOf","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","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","scrollbarWidth","inner","minWidth","outer","position","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","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","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,186,187,188,189,190,191,192,219,220,221,222,111,106,"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","OSKey","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","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","_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","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","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","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","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","t","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","right","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","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","cancelDrag","draggable","setDragImage","clearData","getTextRange","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","message","reportError","msg","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","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","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","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","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","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","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","getCurrentTokenPosition","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","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","$id","applyDelta","docLines","delta","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","to","chunk","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","lineDif","consumePoint","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","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","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","$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","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","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","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","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","inVirtualSelectionMode","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","totalDiff","rangeIndex","subRows","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","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","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","idx4","classToUse","space","output","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$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","v","$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","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","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","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","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","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","hidden","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","version","JsonHighlightRules","MatchingBraceOutdent","openBracePos","context","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","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.css b/dist/jsoneditor.min.css index 3f1460a..0e8c5b4 100644 --- a/dist/jsoneditor.min.css +++ b/dist/jsoneditor.min.css @@ -1 +1 @@ -.jsoneditor .field,.jsoneditor .readonly,.jsoneditor .value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}.jsoneditor .field p,.jsoneditor .value p{margin:0}.jsoneditor .value{word-break:break-word}.jsoneditor .readonly{min-width:16px;color:gray}.jsoneditor .empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}.jsoneditor .field.empty::after,.jsoneditor .value.empty::after{pointer-events:none;color:#d3d3d3;font-size:8pt}.jsoneditor .field.empty::after{content:"field"}.jsoneditor .value.empty::after{content:"value"}.jsoneditor .value.url{color:green;text-decoration:underline}.jsoneditor a.value.url:focus,.jsoneditor a.value.url:hover{color:#ee422e}.jsoneditor .separator{padding:3px 0;vertical-align:top;color:gray}.jsoneditor .field.highlight,.jsoneditor .field[contenteditable=true]:focus,.jsoneditor .field[contenteditable=true]:hover,.jsoneditor .value.highlight,.jsoneditor .value[contenteditable=true]:focus,.jsoneditor .value[contenteditable=true]:hover{background-color:#FFFFAB;border:1px solid #ff0;border-radius:2px}.jsoneditor .field.highlight-active,.jsoneditor .field.highlight-active:focus,.jsoneditor .field.highlight-active:hover,.jsoneditor .value.highlight-active,.jsoneditor .value.highlight-active:focus,.jsoneditor .value.highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}.jsoneditor .value.string{color:green}.jsoneditor .value.array,.jsoneditor .value.object{min-width:16px;color:grey}.jsoneditor .value.number{color:#ee422e}.jsoneditor .value.boolean{color:#ff8c00}.jsoneditor .value.null{color:#004ED0}.jsoneditor .value.invalid{color:#000}.jsoneditor div.tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:url(img/jsoneditor-icons.svg)}.jsoneditor.mode-form tr.expandable td.tree,.jsoneditor.mode-view tr.expandable td.tree{cursor:pointer}.jsoneditor div.tree button.collapsed{background-position:0 -48px}.jsoneditor div.tree button.expanded{background-position:0 -72px}.jsoneditor div.tree button.contextmenu{background-position:-48px -72px}.jsoneditor div.tree button.contextmenu.selected,.jsoneditor div.tree button.contextmenu:focus,.jsoneditor div.tree button.contextmenu:hover{background-position:-48px -48px}.jsoneditor div.tree :focus{outline:0}.jsoneditor div.tree button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}.jsoneditor div.tree button.invisible{visibility:hidden;background:0 0}.jsoneditor{color:#1A1A1A;border:1px solid #3883fa;box-sizing:border-box;width:100%;height:100%;overflow:auto;position:relative;padding:0;line-height:100%}.jsoneditor,.jsoneditor div.outer{-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.jsoneditor div.tree table.tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}.jsoneditor div.outer{width:100%;height:100%;margin:-35px 0 0;padding:35px 0 0;box-sizing:border-box;overflow:hidden}.jsoneditor div.tree{width:100%;height:100%;position:relative;overflow:auto}.jsoneditor textarea.text{width:100%;height:100%;margin:0;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}.jsoneditor .menu,.jsoneditor textarea.text{-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.jsoneditor tr.highlight{background-color:#FFFFAB}.jsoneditor div.tree button.dragarea{background:url(img/jsoneditor-icons.svg)-72px -72px;cursor:move}.jsoneditor div.tree button.dragarea:focus,.jsoneditor div.tree button.dragarea:hover{background-position:-72px -48px}.jsoneditor td,.jsoneditor th,.jsoneditor tr{padding:0;margin:0}.jsoneditor td,.jsoneditor td.tree{vertical-align:top}.jsoneditor .field,.jsoneditor .value,.jsoneditor td,.jsoneditor textarea,.jsoneditor th{font-family:droid sans mono,consolas,monospace,courier new,courier,sans-serif;font-size:10pt;color:#1A1A1A}.jsoneditor-contextmenu{position:absolute;z-index:99999}.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:124px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}.jsoneditor-contextmenu ul li button{padding:0;margin:0;width:124px;height:24px;border:none;cursor:pointer;color:#4d4d4d;background:0 0;line-height:26px;text-align:left}.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}.jsoneditor-contextmenu ul li button:focus,.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}.jsoneditor-contextmenu ul li button.default{width:92px}.jsoneditor-contextmenu ul li button.expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}.jsoneditor-contextmenu div.icon{float:left;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(img/jsoneditor-icons.svg)}.jsoneditor-contextmenu ul li button div.expand{float:right;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg)0 -72px;opacity:.4}.jsoneditor-contextmenu ul li button.expand:focus div.expand,.jsoneditor-contextmenu ul li button.expand:hover div.expand,.jsoneditor-contextmenu ul li button:focus div.expand,.jsoneditor-contextmenu ul li button:hover div.expand,.jsoneditor-contextmenu ul li.selected div.expand{opacity:1}.jsoneditor-contextmenu .separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}.jsoneditor-contextmenu button.remove>.icon{background-position:-24px -24px}.jsoneditor-contextmenu button.remove:focus>.icon,.jsoneditor-contextmenu button.remove:hover>.icon{background-position:-24px 0}.jsoneditor-contextmenu button.append>.icon{background-position:0 -24px}.jsoneditor-contextmenu button.append:focus>.icon,.jsoneditor-contextmenu button.append:hover>.icon{background-position:0 0}.jsoneditor-contextmenu button.insert>.icon{background-position:0 -24px}.jsoneditor-contextmenu button.insert:focus>.icon,.jsoneditor-contextmenu button.insert:hover>.icon{background-position:0 0}.jsoneditor-contextmenu button.duplicate>.icon{background-position:-48px -24px}.jsoneditor-contextmenu button.duplicate:focus>.icon,.jsoneditor-contextmenu button.duplicate:hover>.icon{background-position:-48px 0}.jsoneditor-contextmenu button.sort-asc>.icon{background-position:-168px -24px}.jsoneditor-contextmenu button.sort-asc:focus>.icon,.jsoneditor-contextmenu button.sort-asc:hover>.icon{background-position:-168px 0}.jsoneditor-contextmenu button.sort-desc>.icon{background-position:-192px -24px}.jsoneditor-contextmenu button.sort-desc:focus>.icon,.jsoneditor-contextmenu button.sort-desc:hover>.icon{background-position:-192px 0}.jsoneditor-contextmenu ul li .selected{color:#fff;background-color:#ee422e}.jsoneditor-contextmenu ul li{overflow:hidden}.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.jsoneditor-contextmenu ul li ul li button{padding-left:24px;animation:all ease-in-out 1s}.jsoneditor-contextmenu ul li ul li button:focus,.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}.jsoneditor-contextmenu button.type-string>.icon{background-position:-144px -24px}.jsoneditor-contextmenu button.type-string.selected>.icon,.jsoneditor-contextmenu button.type-string:focus>.icon,.jsoneditor-contextmenu button.type-string:hover>.icon{background-position:-144px 0}.jsoneditor-contextmenu button.type-auto>.icon{background-position:-120px -24px}.jsoneditor-contextmenu button.type-auto.selected>.icon,.jsoneditor-contextmenu button.type-auto:focus>.icon,.jsoneditor-contextmenu button.type-auto:hover>.icon{background-position:-120px 0}.jsoneditor-contextmenu button.type-object>.icon{background-position:-72px -24px}.jsoneditor-contextmenu button.type-object.selected>.icon,.jsoneditor-contextmenu button.type-object:focus>.icon,.jsoneditor-contextmenu button.type-object:hover>.icon{background-position:-72px 0}.jsoneditor-contextmenu button.type-array>.icon{background-position:-96px -24px}.jsoneditor-contextmenu button.type-array.selected>.icon,.jsoneditor-contextmenu button.type-array:focus>.icon,.jsoneditor-contextmenu button.type-array:hover>.icon{background-position:-96px 0}.jsoneditor-contextmenu button.type-modes>.icon{background-image:none;width:6px}.jsoneditor .menu{width:100%;height:35px;padding:2px;margin:0;overflow:hidden;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}.jsoneditor .menu button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:url(img/jsoneditor-icons.svg);color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}.jsoneditor .menu button:hover{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4)}.jsoneditor .menu button:active,.jsoneditor .menu button:focus{background-color:rgba(255,255,255,.3)}.jsoneditor .menu button:disabled{opacity:.5}.jsoneditor .menu button.collapse-all{background-position:0 -96px}.jsoneditor .menu button.expand-all{background-position:0 -120px}.jsoneditor .menu button.undo{background-position:-24px -96px}.jsoneditor .menu button.undo:disabled{background-position:-24px -120px}.jsoneditor .menu button.redo{background-position:-48px -96px}.jsoneditor .menu button.redo:disabled{background-position:-48px -120px}.jsoneditor .menu button.compact{background-position:-72px -96px}.jsoneditor .menu button.format{background-position:-72px -120px}.jsoneditor .menu button.modes{background-image:none;width:auto;padding-left:6px;padding-right:6px}.jsoneditor .menu button.separator{margin-left:10px}.jsoneditor .menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}.jsoneditor .menu a:hover{opacity:1}.jsoneditor .menu a.poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}.jsoneditor .search .results,.jsoneditor .search input{font-family:arial,sans-serif;font-size:10pt;color:#1A1A1A;background:0 0}.jsoneditor .search{position:absolute;right:2px;top:2px}.jsoneditor .search .frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}.jsoneditor .search .frame table{border-collapse:collapse}.jsoneditor .search input{width:120px;border:none;outline:0;margin:1px;line-height:20px}.jsoneditor .search .results{color:#4d4d4d;padding-right:5px;line-height:24px}.jsoneditor .search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(img/jsoneditor-icons.svg);vertical-align:top}.jsoneditor .search button:hover{background-color:transparent}.jsoneditor .search button.refresh{width:18px;background-position:-99px -73px}.jsoneditor .search button.next{cursor:pointer;background-position:-124px -73px}.jsoneditor .search button.next:hover{background-position:-124px -49px}.jsoneditor .search button.previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}.jsoneditor .search button.previous:hover{background-position:-148px -49px} \ No newline at end of file +div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-readonly{min-width:16px;color:gray}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty::after,div.jsoneditor-value.jsoneditor-empty::after{pointer-events:none;color:#d3d3d3;font-size:8pt}div.jsoneditor-field.jsoneditor-empty::after{content:"field"}div.jsoneditor-value.jsoneditor-empty::after{content:"value"}div.jsoneditor-value.jsoneditor-url{color:green;text-decoration:underline}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:gray}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#FFFFAB;border:1px solid #ff0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-string{color:green}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px;color:grey}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ED0}div.jsoneditor-value.jsoneditor-invalid{color:#000}div.jsoneditor-tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:url(img/jsoneditor-icons.svg)}div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree,div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree{cursor:pointer}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-contextmenu.selected,div.jsoneditor-tree button.jsoneditor-contextmenu:focus,div.jsoneditor-tree button.jsoneditor-contextmenu:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu{background-position:-48px -48px}div.jsoneditor-tree :focus{outline:0}div.jsoneditor-tree button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:0 0}div.jsoneditor{color:#1A1A1A;border:1px solid #3883fa;box-sizing:border-box;width:100%;height:100%;overflow:auto;position:relative;padding:0;line-height:100%}div.jsoneditor,div.jsoneditor-outer{-moz-box-sizing:border-box;-webkit-box-sizing:border-box}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}div.jsoneditor-outer{width:100%;height:100%;margin:-35px 0 0;padding:35px 0 0;box-sizing:border-box;overflow:hidden}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto}textarea.jsoneditor-text{width:100%;height:100%;margin:0;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}div.jsoneditor-menu,textarea.jsoneditor-text{-moz-box-sizing:border-box;-webkit-box-sizing:border-box}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#e6e6e6}tr.jsoneditor-selected button.jsoneditor-contextmenu,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea{background:url(img/jsoneditor-icons.svg)-72px -72px;cursor:move}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}div.jsoneditor td,div.jsoneditor td.jsoneditor-tree{vertical-align:top}div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,div.jsoneditor-field,div.jsoneditor-value{font-family:droid sans mono,consolas,monospace,courier new,courier,sans-serif;font-size:10pt;color:#1A1A1A}div.jsoneditor-contextmenu{position:absolute;z-index:99999}div.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:124px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}div.jsoneditor-contextmenu ul li button{padding:0;margin:0;width:124px;height:24px;border:none;cursor:pointer;color:#4d4d4d;background:0 0;line-height:26px;text-align:left}div.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}div.jsoneditor-contextmenu ul li button:focus,div.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}div.jsoneditor-contextmenu ul li button.jsoneditor-default{width:92px}div.jsoneditor-contextmenu ul li button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}div.jsoneditor-contextmenu div.jsoneditor-icon{float:left;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(img/jsoneditor-icons.svg)}div.jsoneditor-contextmenu ul li button div.jsoneditor-expand{float:right;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg)0 -72px;opacity:.4}div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand{opacity:1}div.jsoneditor-contextmenu div.jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}div.jsoneditor-contextmenu button.jsoneditor-remove>div.jsoneditor-icon{background-position:-24px -24px}div.jsoneditor-contextmenu button.jsoneditor-remove:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-remove:hover>div.jsoneditor-icon{background-position:-24px 0}div.jsoneditor-contextmenu button.jsoneditor-append>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-append:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-append:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-insert>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-insert:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-insert:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-duplicate>div.jsoneditor-icon{background-position:-48px -24px}div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover>div.jsoneditor-icon{background-position:-48px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-asc>div.jsoneditor-icon{background-position:-168px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover>div.jsoneditor-icon{background-position:-168px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-desc>div.jsoneditor-icon{background-position:-192px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover>div.jsoneditor-icon{background-position:-192px 0}div.jsoneditor-contextmenu ul li button.jsoneditor-selected,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}div.jsoneditor-contextmenu ul li{overflow:hidden}div.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}div.jsoneditor-contextmenu ul li ul li button{padding-left:24px;animation:all ease-in-out 1s}div.jsoneditor-contextmenu ul li ul li button:focus,div.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}div.jsoneditor-contextmenu button.jsoneditor-type-string>div.jsoneditor-icon{background-position:-144px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:hover>div.jsoneditor-icon{background-position:-144px 0}div.jsoneditor-contextmenu button.jsoneditor-type-auto>div.jsoneditor-icon{background-position:-120px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover>div.jsoneditor-icon{background-position:-120px 0}div.jsoneditor-contextmenu button.jsoneditor-type-object>div.jsoneditor-icon{background-position:-72px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:hover>div.jsoneditor-icon{background-position:-72px 0}div.jsoneditor-contextmenu button.jsoneditor-type-array>div.jsoneditor-icon{background-position:-96px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:hover>div.jsoneditor-icon{background-position:-96px 0}div.jsoneditor-contextmenu button.jsoneditor-type-modes>div.jsoneditor-icon{background-image:none;width:6px}div.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;overflow:hidden;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}div.jsoneditor-menu>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:url(img/jsoneditor-icons.svg);color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}div.jsoneditor-menu>button:hover{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4)}div.jsoneditor-menu>button:active,div.jsoneditor-menu>button:focus{background-color:rgba(255,255,255,.3)}div.jsoneditor-menu>button:disabled{opacity:.5}div.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}div.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}div.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}div.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}div.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}div.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}div.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}div.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}div.jsoneditor-menu>button.jsoneditor-modes{background-image:none;width:auto;padding-left:6px;padding-right:6px}div.jsoneditor-menu>button.jsoneditor-separator{margin-left:10px}div.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}div.jsoneditor-menu a:hover{opacity:1}div.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}table.jsoneditor-search div.jsoneditor-results,table.jsoneditor-search input{font-family:arial,sans-serif;font-size:10pt;color:#1A1A1A;background:0 0}table.jsoneditor-search{position:absolute;right:2px;top:2px}table.jsoneditor-search div.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}table.jsoneditor-search div.jsoneditor-frame table{border-collapse:collapse}table.jsoneditor-search input{width:120px;border:none;outline:0;margin:1px;line-height:20px}table.jsoneditor-search .jsoneditor-results{color:#4d4d4d;padding-right:5px;line-height:24px}table.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(img/jsoneditor-icons.svg);vertical-align:top}table.jsoneditor-search button:hover{background-color:transparent}table.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}table.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}table.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}table.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}table.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px} \ No newline at end of file diff --git a/dist/jsoneditor.min.js b/dist/jsoneditor.min.js index c922a59..8ef6621 100644 --- a/dist/jsoneditor.min.js +++ b/dist/jsoneditor.min.js @@ -24,21 +24,21 @@ * * @author Jos de Jong, * @version 4.2.1 - * @date 2015-12-27 + * @date 2015-12-30 */ -!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.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","onChange","onEditable","onError","onModeChange","escapeUnicode","history","mode","modes","name","indentation","theme"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}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),a=r.mode;r.mode=e;var l=n.modes[e];if(!l)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==l.data;if(i=this.getName(),t=this[c?"getText":"get"](),this._delete(),s.clear(this),s.extend(this,l.mixin),this.create(o,r),this.setName(i),this[c?"setText":"set"](t),"function"==typeof l.load)try{l.load.call(this)}catch(h){console.error(h)}if("function"==typeof r.onModeChange&&e!==a)try{r.onModeChange(e,a)}catch(h){console.error(h)}}catch(h){this._onError(h)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.registerMode=function(e){var t,i;if(s.isArray(e))for(t=0;te&&i.scrollTop>0?this.autoScrollStep=(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 mode-"+this.options.mode,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.onChange&&this.options.onChange())},c._onRedo=function(){this.history&&(this.history.redo(),this.options.onChange&&this.options.onChange())},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)}catch(o){}var r=i(8),s=i(3),a={};a.create=function(e,t){t=t||{},this.options=t,t.indentation?this.indentation=Number(t.indentation):this.indentation=2;var i=t.ace?t.ace:n;this.mode="code"==t.mode?"code":"text","code"==this.mode&&"undefined"==typeof i&&(this.mode="text",s.log("WARNING: Cannot load code editor, Ace library not loaded. Falling back to plain text editor")),this.theme=t.theme||"ace/theme/jsoneditor";var o=this;this.container=e,this.dom={},this.aceEditor=void 0,this.textarea=void 0,this.width=e.clientWidth,this.height=e.clientHeight,this.frame=document.createElement("div"),this.frame.className="jsoneditor mode-"+this.options.mode,this.frame.onclick=function(e){e.preventDefault()},this.frame.onkeydown=function(e){o._onKeyDown(e)},this.menu=document.createElement("div"),this.menu.className="menu",this.frame.appendChild(this.menu);var a=document.createElement("button");a.className="format",a.title="Format JSON data, with proper indentation and line feeds (Ctrl+\\)",this.menu.appendChild(a),a.onclick=function(){try{o.format()}catch(e){o._onError(e)}};var l=document.createElement("button");if(l.className="compact",l.title="Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)",this.menu.appendChild(l),l.onclick=function(){try{o.compact()}catch(e){o._onError(e)}},this.options&&this.options.modes&&this.options.modes.length){var c=r.create(this,this.options.modes,this.options.mode);this.menu.appendChild(c),this.dom.modeBox=c}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 h=i.edit(this.editorDom);h.$blockScrolling=1/0,h.setTheme(this.theme),h.setShowPrintMargin(!1),h.setFontSize(13),h.getSession().setMode("ace/mode/json"),h.getSession().setTabSize(this.indentation),h.getSession().setUseSoftTabs(!0),h.getSession().setUseWrapMode(!0),h.commands.bindKey("Ctrl-L",null),h.commands.bindKey("Command-L",null),this.aceEditor=h,this.hasOwnProperty("editor")||Object.defineProperty(this,"editor",{get:function(){return console.warn('Property "editor" has been renamed to "aceEditor".'),o.aceEditor},set:function(e){console.warn('Property "editor" has been renamed to "aceEditor".'),o.aceEditor=e}});var u=document.createElement("a");u.appendChild(document.createTextNode("powered by ace")),u.href="http://ace.ajax.org",u.target="_blank",u.className="poweredBy",u.onclick=function(){window.open(u.href,u.target)},this.menu.appendChild(u),t.onChange&&h.on("change",t.onChange)}else{var d=document.createElement("textarea");d.className="text",d.spellcheck=!1,this.content.appendChild(d),this.textarea=d,t.onChange&&(null===this.textarea.oninput?this.textarea.oninput=t.onChange():this.textarea.onchange=t.onChange())}},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.aceEditor&&this.aceEditor.destroy(),this.frame&&this.container&&this.frame.parentNode==this.container&&this.container.removeChild(this.frame)},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.aceEditor&&this.aceEditor.focus()},a.resize=function(){if(this.aceEditor){var e=!1;this.aceEditor.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),e=s.parse(t)}return e},a.getText=function(){return this.textarea?this.textarea.value:this.aceEditor?this.aceEditor.getValue():""},a.setText=function(e){this.options.escapeUnicode===!0?text=s.escapeUnicodeChars(e):text=e,this.textarea&&(this.textarea.value=text),this.aceEditor&&this.aceEditor.setValue(text,-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(9);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,t,i){function n(){this.locked=!1}n.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},n.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))}},n.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},n.prototype.lock=function(){this.locked=!0},n.prototype.unlock=function(){this.locked=!1},e.exports=n},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)}},n.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)}},n.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)})},n.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},n.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},n.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},n.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},n.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},n.prototype.clear=function(){this.dom.search.value="",this._onSearch()},e.exports=n},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(11),r=i(12),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.onEditable)){var e=this.editor.options.onEditable({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,t){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)&&("string"==e?this.value=String(this.value):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=["value"],i=this.value,n="auto"==this.type?s.type(i):this.type,o="string"==n&&s.isUrl(i);t.push(n),o&&t.push("url");var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r&&t.push("empty"),this.searchValueActive&&t.push("highlight-active"),this.searchValue&&t.push("highlight"),e.className=t.join(" "),"array"==n||"object"==n){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else o&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";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;"array"==this.type?(o.innerHTML="["+r+"]",this.dom.tr.className="expandable"):"object"==this.type?(o.innerHTML="{"+r+"}",this.dom.tr.className="expandable"):(o.innerHTML=this._escapeHTML(this.value),this.dom.tr.className="")}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.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),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.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||("view"===r.editor.options.mode||"form"===r.editor.options.mode)&&"DIV"===n.nodeName)&&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),n=i.substring(1,i.length-1);return this.editor.options.escapeUnicode===!0&&(n=s.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',i=s.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;i2&&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=n,t.parse=n.parse.bind(n)},function(e,t,i){var n=i(14);i(15),i(16),i(13),e.exports=n},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(11);e.exports=n},function(e,t,i){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){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, consolas, 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: lightgray } .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 lightgray } .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 n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)})},function(e,t,i){!function(){function e(e){var t=i;e&&(i[e]||(i[e]={}),t=i[e]),t.define&&t.define.packaged||(n.original=t.define,t.define=n,t.define.packaged=!0),t.acequire&&t.acequire.packaged||(r.original=t.acequire,t.acequire=r,t.acequire.packaged=!0)}var t="ace",i=function(){return this}();if(i||"undefined"==typeof window||(i=window),t||"undefined"==typeof acequirejs){var n=function(e,t,i){return"string"!=typeof e?void(n.original?n.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())):(2==arguments.length&&(i=t),void(n.modules[e]||(n.payloads[e]=i,n.modules[e]=null)))};n.modules={},n.payloads={};var o=function(e,t,i){if("string"==typeof t){var n=a(e,t);if(void 0!=n)return i&&i(),n}else if("[object Array]"===Object.prototype.toString.call(t)){for(var o=[],s=0,l=t.length;l>s;++s){var c=a(e,t[s]);if(void 0==c&&r.original)return;o.push(c)}return i&&i.apply(null,o)||!0}},r=function(e,t){var i=o("",e,t);return void 0==i&&r.original?r.original.apply(this,arguments):i},s=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return s(e,i[0])+"!"+s(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},a=function(e,t){t=s(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var r={},a={id:t,uri:"",exports:r,packaged:!0},l=function(e,i){return o(t,e,i)},c=i(l,r,a);r=c||a.exports,n.modules[t]=r,delete n.payloads[t]}i=n.modules[t]=r||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,i){"use strict";function n(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function o(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&o(l,"")>-1&&(i=RegExp(this.source,r.replace.call(n(this),"g","")),r.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=r.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(e,t,i){function n(){}function o(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function r(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(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=f.call(arguments,1),o=function(){if(this instanceof o){var n=t.apply(this,i.concat(f.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(f.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,o.prototype=new n,n.prototype=null),o});var s,a,l,c,h,u=Function.prototype.call,d=Array.prototype,g=Object.prototype,f=d.slice,p=u.bind(g.toString),m=u.bind(g.hasOwnProperty);if((h=m(g,"__defineGetter__"))&&(s=u.bind(g.__defineGetter__),a=u.bind(g.__defineSetter__),l=u.bind(g.__lookupGetter__),c=u.bind(g.__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 v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(f.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=f.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 u=0;c>u;++u)this[l+u]=this[a+u];else if(l>a)for(u=c;u--;)this[l+u]=this[a+u];if(r&&e===h)this.length=h,this.push.apply(this,o);else for(this.length=h+r,u=0;r>u;++u)this[e+u]=o[u]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==p(e)});var A=Object("a"),w="a"!=A[0]||!(0 in A);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=arguments[1],o=-1,r=i.length>>>0;if("[object Function]"!=p(e))throw new TypeError;for(;++o>>0,o=Array(n),r=arguments[1];if("[object Function]"!=p(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=O(this),n=w&&"[object String]"==p(this)?this.split(""):i,o=n.length>>>0,r=[],s=arguments[1];if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=p(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=w&&"[object String]"==p(this)?this.split(""):O(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=r(arguments[1])),n=n>=0?n:Math.max(0,i+n);i>n;n++)if(n in t&&t[n]===e)return n;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=w&&"[object String]"==p(this)?this.split(""):O(this),i=t.length>>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,r(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:g)}),!Object.getOwnPropertyDescriptor){var C="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(C+e);if(m(e,t)){var i,n,o;if(i={enumerable:!0,configurable:!0},h){var r=e.__proto__;e.__proto__=g;var n=l(e,t),o=c(e,t);if(e.__proto__=r,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 E;E=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=E();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 F=o({}),y="undefined"==typeof document||o(document.createElement("div"));if(!F||!y)var b=Object.defineProperty}if(!Object.defineProperty||b){var x="Property description must be an object: ",S="Object.defineProperty called on non-object: ",$="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(S+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(x+i);if(b)try{return b.call(Object,e,t,i)}catch(n){}if(m(i,"value"))if(h&&(l(e,t)||c(e,t))){var o=e.__proto__;e.__proto__=g,delete e[t],e[t]=i.value,e.__proto__=o}else e[t]=i.value;else{if(!h)throw new TypeError($);m(i,"get")&&s(e,t,i.get),m(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)m(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(B){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(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";m(e,t);)t+="?";e[t]=!0;var i=m(e,t);return delete e[t],i}),!Object.keys){var D=!0,k=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],L=k.length;for(var _ in{toString:null})D=!1;Object.keys=function N(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var N=[];for(var t in e)m(e,t)&&N.push(t);if(D)for(var i=0,n=L;n>i;i++){var o=k[i];m(e,o)&&N.push(o)}return N}}Date.now||(Date.now=function(){return(new Date).getTime()});var R=" \n \f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||R.trim()){R="["+R+"]";var T=new RegExp("^"+R+R+"*"),M=new RegExp(R+R+"*$");String.prototype.trim=function(){return String(this).replace(T,"").replace(M,"")}}var O=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,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";var n="http://www.w3.org/1999/xhtml";return 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||n,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?(o.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]:(o.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((o.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(o.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(o.split(" Chrome/")[1])||void 0,t.isAIR=o.indexOf("AdobeAIR")>=0,t.isIPad=o.indexOf("iPad")>=0,t.isTouchPad=o.indexOf("TouchPad")>=0,t.isChromeOS=o.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(a.OSKey&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var o="location"in t?t.location:t.keyLocation;if(17===i&&1===o)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===o){var h=t.timeStamp-l;50>h&&(a.altGr=!0)}}}if(i in r.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&93>=i&&(i=-1),!n&&13===i){var o="location"in t?t.location:t.keyLocation;if(3===o&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return n||i in r.FUNCTION_KEYS||i in r.PRINTABLE_KEYS?e(t,n,i):!1}function o(){a=Object.create(null),a.count=0,a.lastT=0}var r=e("./keys"),s=e("./useragent"),a=null,l=0;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||s.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.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,o;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,o=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,r=e.changedTouches[0];e.wheelX=-(r.clientX-n)/t,e.wheelY=-(r.clientY-o)/t,n=r.clientX,o=r.clientY,i(e)})}},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,o){var r,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,s.isIE){var u=Math.abs(e.clientX-r)>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&&(r=e.clientX,a=e.clientY)}if(e._clicks=c,n[o]("mousedown",e),c>4)c=0;else if(c>1)return n[o](h[c],e)}),s.isOldIE&&t.addListener(e,"dblclick",function(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[o]("mousedown",e),n[o](h[c],e)})};var c=!s.isMac||!s.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)};if(t.getModifierString=function(e){return r.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var r=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;r(e,"keydown",function(e){l=e.keyCode}),r(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;r(e,"keydown",function(e){var t=e.keyCode;a[t]=(a[t]||0)+1,91==t||92==t?a.OSKey=!0:a.OSKey&&e.timeStamp-a.lastT>200&&1==a.count&&o(),1==a[t]&&a.count++,a.lastT=e.timeStamp;var r=n(i,e,t);return c=e.defaultPrevented,r}),r(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),r(e,"keyup",function(e){var t=e.keyCode;a[t]?a.count=Math.max(a.count-1,0):o(),(91==t||92==t)&&(a.OSKey=!1),a[t]=null}),a||(o(),r(window,"focus",o))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){var h=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+h;t.addListener(i,"message",function o(r){r.data==n&&(t.stopPropagation(r),t.removeListener(i,"message",o),e())}),i.postMessage(n,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"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 n=/^\s\s*/,o=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(o,"")},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++)e[i]&&"object"==typeof e[i]?t[i]=this.copyObject(e[i]):t[i]=e[i];return t},t.deepCopy=function r(e){if("object"!=typeof e||!e)return e;var t;if(Array.isArray(e)){t=[];for(var i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(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 n.$blockScrolling++,s&&n.selection.moveToPosition(i),n.$blockScrolling--,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;i.$blockScrolling++,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"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,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 o=r(this.$clickSelection,i);i=o.cursor,e=o.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),o=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(o.start),a=this.$clickSelection.comparePoint(o.end);if(-1==s&&0>=a)t=this.$clickSelection.end,(o.end.row!=n.row||o.end.column!=n.column)&&(n=o.start);else if(1==a&&s>=0)t=this.$clickSelection.start,(o.start.row!=n.row||o.start.column!=n.column)&&(n=o.end);else if(-1==s&&1==a)n=o.end,t=o.start;else{var l=r(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,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=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>s||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(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.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}},this.onTouchMove=function(e){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(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var o=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=o.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){o.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){o.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(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=u.getDocumentPosition().row,o=l.$annotations[t];if(!o)return i();var r=s.session.getLength();if(t==r){var a=s.renderer.pixelToScreenCoordinates(0,u.y).row,h=u.$pos;if(a>s.session.documentToScreenRow(h.row,h.column))return i()}if(d!=o)if(d=o.text.join("
"),c.setHtml(d),c.show(),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(u);else{var g=u.domEvent.target,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,s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new o(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,o=s.session.selection;if(t.getShiftKey())o.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,u,d;e.editor.setDefaultHandler("guttermousemove",function(o){var s=o.domEvent.target||o.domEvent.srcElement;return r.hasCssClass(s,"ace_fold-widget")?i():(d&&e.$tooltipFollowsMouse&&n(o),u=o,void(h||(h=setTimeout(function(){h=null,u&&!e.isMousePressed?t():i()},50))))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){u=null,d&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function o(e){l.call(this,e)}var r=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(o,l),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),l.prototype.setPosition.call(this,e,t)}}.call(o.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),o=e("../lib/useragent"),r=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(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.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 n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=o.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(r.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,r=!t||e.column!=t.column;if(!B||n||r)m.$blockScrolling+=1,m.moveCursorToPosition(e),m.$blockScrolling-=1,B=i,D={x:C,y:E};else{var s=o(D.x,D.y,C,E);s>h?B=null:i-B>=c&&(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}},a=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>=a/o&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=l&&m.renderer.scrollCursorIntoView(h):$=i:$=null}function n(){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),n(),F=setInterval(n,20),L=0,s.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,s.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=a.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=r.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.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",a.isOpera&&(m.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.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),s.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),s.preventDefault(e)):void 0},this.onDragLeave=function(e){return L--,0>=L&&w?(d(),x=null,s.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(),s.preventDefault(e)}},s.addListener(k,"dragstart",this.onDragStart.bind(e)),s.addListener(k,"dragend",this.onDragEnd.bind(e)),s.addListener(k,"dragenter",this.onDragEnter.bind(e)),s.addListener(k,"dragover",this.onDragOver.bind(e)),s.addListener(k,"dragleave",this.onDragLeave.bind(e)),s.addListener(k,"drop",this.onDrop.bind(e));var _=null}function o(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var r=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=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(e){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=a.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.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(a.isWebKit){this.cancelDrag=!0;var s=t.container;s.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=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 i=n.getDocumentHead(),o=document.createElement("script");o.src=e,i.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,i){"use strict";var n={},o=function(){this.propagationStopped=!0},r=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=o),t.preventDefault||(t.preventDefault=r),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"),e("./lib/net")),l=e("./lib/app_config").AppConfig;n.exports=t=new l;var c=function(){return this||"undefined"!=typeof window&&window}(),h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return h[e]},t.set=function(e,t){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);h[e]=t},t.all=function(){return s.copyObject(h)},t.moduleUrl=function(e,t){if(h.$moduleUrls[e])return h.$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=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+o+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$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 l=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 a.loadScript(t.moduleUrl(i,r),l):l()}},o(!0),t.init=o}),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,i){"use strict";var n=e("../lib/event"),o=e("../lib/useragent"),r=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new r(this),new s(this),new l(this);var i=function(t){document.hasFocus&&document.hasFocus()||window.focus(),e.focus(),e.isFocused()||window.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener(a,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(n.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),n.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),o.isIE&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i))),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",function(t){return e.focus(),n.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 a(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 a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,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 i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var r=this,s=function(e){if(e){if(o.isWebKit&&!e.which&&r.releaseMouse)return r.releaseMouse();r.x=e.clientX,r.y=e.clientY,t&&t(e),r.mouseEvent=new a(e,r.editor),r.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),r[r.state+"End"]&&r[r.state+"End"](e),r.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$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(o.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});r.$onCaptureMouseMove=s,r.releaseMouse=n.capture(this.editor.container,s,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&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:o.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(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=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),o=e("../lib/event"),r=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,n){for(var r,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(r=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n),!(r&&r.command&&(s="null"==r.command?!0:a.exec(r.command,this.$editor,r.args,n),s&&n&&-1!=e&&1!=r.passEvent&&1!=r.command.passEvent&&o.stopEvent(n),s))););return s||-1!=e||(r={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal("keyboardActivity",r),s},this.onCommandKey=function(e,t,i){var o=n.keyCodeToString(i);this.$callKeyboardHandlers(t,o,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(r.prototype),t.KeyBinding=r}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},o=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 n={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()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.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 s(n,0,i,this.session.getLine(i).length):new s(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 n=this.session.getLine(t).substring(0,i);if(0===i){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var r=o.stringReverse(n),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>0||e>0)&&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 s.fromPoints(t,i)}catch(n){return s.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=s.fromPoints(e[t].start,e[t].end);e[t].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(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),o=2e3,r=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?c.onMatch=this.$applyToken:c.onMatch=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){o=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"^"!=e.charAt(0)&&(e="^"+e),"$"!=e.charAt(e.length-1)&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var i=t.slice(0);t=i[0],"#tmp"===t&&(i.shift(),t=i.shift())}else var i=[];var n=t||"start",r=this.states[n];r||(n="start",r=this.states[n]);var s=this.matchMappings[n],a=this.regExps[n];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;Ao){for(u>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(r.prototype),t.Tokenizer=r}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),o=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},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),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,i){"use strict";var n=e("../tokenizer").Tokenizer,o=e("./text_highlight_rules").TextHighlightRules,r=e("./behaviour").Behaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=o,this.$behaviour=new r};(function(){this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new n(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,s=!0,l=!0,c=1/0,h=t.getTabSize(),u=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var d=this.lineCommentStart.map(a.escapeRegExp).join("|"),g=this.lineCommentStart[0];else var d=a.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){(!s||/\S/.test(e))&&(A(e,c,c)?r.insertInLine({row:t,column:c},p):r.insertInLine({row:t,column:c},g))},v=function(e,t){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*)(?:"+a.escapeRegExp(g)+")"),C=new RegExp("(?:"+a.escapeRegExp(w)+")\\s*$"),m=function(e,t){v(e,t)||(!s||/\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,s=!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,a=new l(t,n.row,n.column),h=a.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=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+f;d=new c(p,m,p,m+o.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var f=h.value.indexOf(o.end);if(-1!=f){var p=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+f;g=new c(p,m,p,m+o.end.length);break}h=a.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,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){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(e,t,i,n){var o=this.$keywordList||this.$createKeywordList();return o.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(h.prototype),t.Mode=h}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,i){"use strict";t.applyDelta=function(e,t,i){var n=t.start.row,o=t.start.column,r=e[n]||"";switch(t.action){case"insert":var s=t.lines;if(1===s.length)e[n]=r.substring(0,o)+t.lines[0]+r.substring(o);else{var a=[n,1].concat(t.lines);e.splice.apply(e,a),e[n]=r.substring(0,o)+e[n],e[n+t.lines.length-1]+=r.substring(o)}break;case"remove":var l=t.end.column,c=t.end.row;n===c?e[n]=r.substring(0,o)+r.substring(l):e.splice(n,c-n+1,r.substring(0,o)+e[c].substring(l))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./lib/event_emitter").EventEmitter,r=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(){function e(e,t,i){var n=i?e.column<=t.column:e.columnthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var o={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:o,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=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(r.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./apply_delta").applyDelta,r=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,r),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=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){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:0>e?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},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=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var i;return i=t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),o(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,o=e.start.row,r=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=o+s,e.start.column=r;break}l.push(""),this.applyDelta({start:this.pos(o+s,r),end:this.pos(o+a,r=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},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(l.prototype),t.Document=l}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./lib/event_emitter").EventEmitter,r=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var i=this;this.$worker=function(){if(i.running){for(var e=new Date,t=i.currentLine,n=-1,o=i.doc,r=t;i.lines[t];)t++;var s=o.getLength(),a=0;for(i.running=!1;s>t;){i.$tokenizeRow(t),n=t;do t++;while(i.lines[t]);if(a++,a%5===0&&new Date-e>20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,n>=r&&i.fireUpdateEvent(r,n)}}};(function(){n.implement(this,o),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.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,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(r.prototype),t.BackgroundTokenizer=r}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),o=(e("./lib/oop"),e("./range").Range),r=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,i,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=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new o(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(i),this.clazz,r)}}}).call(r.prototype),t.SearchHighlight=r}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new o(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 o=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(n.prototype),t.FoldLine=n}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("./range").Range,o=n.comparePoints,r=function(){this.ranges=[]};(function(){this.comparePoints=o,this.pointIndex=function(e,t,i){for(var n=this.ranges,r=i||0;r0)){var l=o(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 o(e.start,t.start)});for(var i,n=t[0],r=1;rs||(0!=s||i.isEmpty()||n.isEmpty())&&(o(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(r,1),e.push(n),n=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){if("insert"==e.action)var t=e.start,i=e.end;else var i=e.start,t=e.end;for(var n=t.row,o=i.row,r=o-n,s=-t.column+i.column,a=this.ranges,l=0,c=a.length;c>l;l++){var h=a[l];if(!(h.end.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=r)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&c-1>l&&h.end.column>h.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=r}}}if(0!=r&&c>l)for(;c>l;l++){var h=a[l];h.start.row+=r,h.end.row+=r}}}).call(r.prototype),t.RangeList=r}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,i){"use strict";function n(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function o(e,t){n(e.start,t),n(e.end,t)}function r(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){r(e.start,t),r(e.end,t)}var a=(e("../range").Range,e("../range_list").RangeList),l=e("../lib/oop"),c=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=[]};l.inherits(c,a),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 c(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);o(e,this.start);for(var t=e.start.row,i=e.start.column,n=0,r=-1;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,o=!1;e instanceof s?i=e:(i=new s(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,n;if(null==e?(i=new o(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new o(e,0,e,this.getLine(e).length):"row"in e?o.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var r=n;r.length;)this.expandFolds(r),r=this.getFoldsInRangeList(i);return n.length?n: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 r(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 n=new a(this,e,t),r=n.getCurrentToken();if(r&&/^comment|string/.test(r.type)){var s=new o,l=new RegExp(r.type.replace(/\..*/,"\\."));if(1!=i){do r=n.stepBackward();while(r&&l.test(r.type));n.stepForward()}if(s.start.row=n.getCurrentTokenRow(),s.start.column=n.getCurrentTokenColumn()+2,n=new a(this,e,t),-1!=i){do r=n.stepForward();while(r&&l.test(r.type));r=n.stepBackward()}else r=n.getCurrentToken();return s.end.row=n.getCurrentTokenRow(),s.end.column=n.getCurrentTokenColumn()+r.value.length-2,s}},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.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("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.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},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,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var o=this.getFoldAt(t,this.getLine(t).length,1);o?this.removeFold(o):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var o=e("../range").Range,r=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){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,o=i.charAt(e.column-1),s=o&&o.match(/([\(\[\{])|([\)\]\}])/);if(s||(o=i.charAt(e.column),e={row:e.row,column:e.column+1},s=o&&o.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=r.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=r.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 n=this.$brackets[e],r=1,s=new o(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)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){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 n=this.$brackets[e],r=1,s=new o(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(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var u=c.charAt(l);if(u==n){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 o=e("../token_iterator").TokenIterator,r=e("../range").Range;t.BracketMatch=n}),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,i){"use strict";var n=e("./lib/oop"),o=e("./lib/lang"),r=e("./config"),s=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,l=e("./mode/text").Mode,c=e("./range").Range,h=e("./document").Document,u=e("./background_tokenizer").BackgroundTokenizer,d=e("./search_highlight").SearchHighlight,g=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 h(e)),this.setDocument(e),this.selection=new a(this),r.resetOptions(this),this.setMode(t),r._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}n.implement(this,s),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){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),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=o.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()?o.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.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},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 l=e.start,h=r.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(o.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.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.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(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 c(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.removeFullLines(e,t);return this.doc.insertFullLines(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.$useWrapMode&&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=this.$useWrapMode,i=e.action,n=e.start,o=e.end,r=n.row,s=o.row,a=s-r,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(r,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(o.row),u=0;if(h){h.addRemoveChars(o.row,o.column,n.column-o.column),h.shiftRow(-a);var d=this.getFoldLine(r);d&&d!==h&&(d.merge(h),h=d),u=c.indexOf(h)+1}for(u;u=o.row&&h.shiftRow(-a)}s=r}else{var g=Array(a);g.unshift(r,0);var f=t?this.$wrapData:this.$rowLengthCache;f.splice.apply(f,g);var c=this.$foldData,h=this.getFoldLine(r),u=0;if(h){var p=h.range.compareInside(n.row,n.column);0==p?(h=h.split(n.row,n.column),h&&(h.shiftRow(a),h.addRemoveChars(s,0,o.column-n.column))):-1==p&&(h.addRemoveChars(r,0,o.column-n.column),h.shiftRow(a)),u=c.indexOf(h)+1}for(u;u=r&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(r);h&&h.addRemoveChars(r,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(r,s):this.$updateRowLengthCache(r,s),l},this.$updateRowLengthCache=function(e,t,i){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,l=this.$wrapLimit,c=e;for(t=Math.min(t,o.length-1);t>=c;)n=this.getFoldLine(c,n),n?(i=[],n.walk(function(e,t,n,r){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=a;for(var l=1;lt-w;){var C=c+t-w;if(e[C-1]>=f&&e[C]>=f)r(C);else if(e[C]!=a&&e[C]!=h){for(var E=Math.max(C-(t-(t>>2)),c-1);C>E&&e[C]E&&e[C]E&&e[C]==g;)C--}else for(;C>E&&e[C]E?r(++C):(C=c+t,e[C]==i&&C--,r(C-w))}else{for(C;C!=c-1&&e[C]!=a;C--);if(C>c){r(C);continue}for(C=c+t;Cc;c++)s.push(m)}else 32==l?s.push(f):l>39&&48>l||l>57&&64>l?s.push(g):l>=4352&&e(l)?s.push(t,i):s.push(t)}return s},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.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[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}var p=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){var v=Math.floor(e-s);n=m[v],v>0&&m.length&&(p=m.indent,r=m[v-1]||m[m.length-1],i=i.substring(r))}}return r+=this.$getStringScreenWidth(i,t-p)[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="";d&&a>=g?(f=this.getFoldDisplayLine(d,e,t),o=d.start.row):(f=this.getLine(e).substring(0,t),o=e);var p=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){for(var v=0;f.length>=m[v];)n++,v++;f=f.substring(m[v-1]||0,f.length),p=v>0?m.indent:0}}return{row:n,column:p+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;oi));r++);return[n,r]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(g.prototype),e("./edit_session/folding").Folding.call(g.prototype),e("./edit_session/bracket_match").BracketMatch.call(g.prototype),r.defineOptions(g.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=g}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),o=e("./lib/oop"),r=e("./range").Range,s=function(){this.$options={}};(function(){this.set=function(e){return o.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,o){if(e.start)n=e;else{var s=e.offset+(o||0);if(n=new r(i,s,i,s+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,o=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=o.length-c;e:for(var u=a.offset||0;h>=u;u++){for(var d=0;c>d;d++)if(-1==o[u+d].search(a[d]))continue e;var g=o[u],f=o[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 r(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==i.end.row;)d--;for(s=s.slice(v,d+1),v=0,d=s.length;d>v;v++)s[v].start.row+=i.start.row,s[v].end.row+=i.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];s&&s.toLowerCase()!=s?t[r]=t[r].toUpperCase():t[r]=t[r].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var i=this.$assembleRegExp(t);if(!i)return!1;var o;if(t.$isMultiLine)var s=i.length,a=function(t,n,a){var l=t.search(i[0]);if(-1!=l){for(var c=1;s>c;c++)if(t=e.getLine(n+c),-1==t.search(i[c]))return;var h=t.match(i[s-1])[0].length,u=new r(n,l,n+s-1,h);return 1==i.offset?(u.start.row--,u.start.column=Number.MAX_VALUE):a&&(u.start.column+=a),o(u)?!0:void 0}};else if(t.backwards)var a=function(e,t,r){for(var s=n.getMatchOffsets(e,i),a=s.length-1;a>=0;a--)if(o(s[a],t,r))return!0};else var a=function(e,t,r){for(var s=n.getMatchOffsets(e,i),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(s.prototype),t.Search=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function o(e,t){n.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),s=e("../lib/useragent"),a=r.KEY_MODS;o.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}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&&(void 0==i&&(i=e.position),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=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var r=this.parseKeys(e),s=a[r.hashId]+r.key;this._addCommandToBinding(n+s,t,i)},this):void 0},this._addCommandToBinding=function(t,i,n){var o,r=this.commandKeyBinding;if(i)if(!r[t]||this.$singleCommand)r[t]=i;else{Array.isArray(r[t])?-1!=(o=r[t].indexOf(i))&&r[t].splice(o,1):r[t]=[r[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=r[t];for(o=0;on)break}s.splice(o,0,i)}else delete r[t]},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=r[i];if(r.FUNCTION_KEYS[n])i=r.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 o=0,s=t.length;s--;){var a=r.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;o|=a}return{key:i,hashId:o}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(0>n)){var o=a[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&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-o.length-1)),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=o}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),o=e("../keyboard/hash_handler").MultiHashHandler,r=e("../lib/event_emitter").EventEmitter,s=function(e,t){o.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,o),function(){n.implement(this,r),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(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var o=e("../lib/lang"),r=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){r.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","Ctrl-E"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("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:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){r.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:n("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("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:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("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:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("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:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},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:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("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:n("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("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(o.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("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:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),r=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<=n.row+1;h++){var u=o.stringTrimLeft(o.stringTrimRight(e.session.doc.getLine(h)));0!==u.length&&(u=" "+u),c+=u}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(r=e.session.doc.getLine(i.row).length>r?r+1:r,e.selection.moveCursorTo(i.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(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 r=0;r0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),o=this.renderer.layerConfig;(n.start.row>=o.lastRow||n.end.row<=o.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&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;v.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){this.curOp&&this.endOperation(),this.curOp={};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}),this.curOp=null,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")||o.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 g(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 A(e.session,i.row,i.column),o=n.getCurrentToken();if(!o||!/\b(?:tag-open|tag-name)/.test(o.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==o.type.indexOf("tag-open")||(o=n.stepForward())){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 g(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=this.session.$useWrapMode,i=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,i,t),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||(v.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),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 g(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(e){ -var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var o=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(o),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,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var o=n.length;o--;){var r=n[o];r.isEmpty()||this.session.remove(r),this.session.insert(r.start,i[o])}}},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 g.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 g(o.row,c+r.selection[0],o.row,c+r.selection[1]):new g(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3])),i.getDocument().isNewLine(e)){var d=n.getNextLineIndent(h,a.slice(0,o.column),i.getTabString());i.insert({row:o.row+1,column:0},d)}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 g(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 g(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 g(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=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,i=e.getRange(),n=e.isBackwards();if(i.isEmpty()){var o=i.start.row;t.duplicateLines(o,o)}else{var r=n?i.start:i.end,s=t.insert(r,t.getTextRange(i),!1);i.start=r,i.end=s,e.setSelectionRange(i,n)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,i){return this.session.moveText(e,t,i)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var i,n,o=this.selection;if(!o.inMultiSelectMode||this.inVirtualSelectionMode){var r=o.toOrientedRange();i=this.$getSelectedRows(r),n=this.session.$moveLines(i.first,i.last,t?0:e),t&&-1==e&&(n=0),r.moveBy(n,0),o.fromOrientedRange(r)}else{var s=o.rangeList.ranges;o.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,h=0;c>h;h++){var u=h;s[h].moveBy(a,0),i=this.$getSelectedRows(s[h]);for(var d=i.first,g=i.last;++hg+1)break;g=f.last}for(h--,a=this.session.$moveLines(d,g,t?0:e),t&&-1==e&&(u=h+1);h>=u;)s[u].moveBy(a,0),u++;t||(a=0),l+=a}o.fromOrientedRange(o.ranges[0]),o.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){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 A(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,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.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,i),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,o.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(w.prototype),v.defineOptions(w.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(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){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",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=w}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),o=e("../lib/oop"),r=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.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(){o.implement(this,s),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=n.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=n.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(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}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 ace_br15",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(t,i,o,r,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,u=0,d=0,g=a.getScreenLastRowColumn(h),f=new n(h,i.start.column,h,d);c>=h;h++)f.start.row=f.end.row=h,f.start.column=h==l?i.start.column:a.getRowWrapIndent(h),f.end.column=g,u=d,d=g,g=c>h+1?a.getScreenLastRowColumn(h+1):h==c?0:i.end.column,this.drawSingleLineMarker(t,f,o+(h==l?" ace_start":"")+" ace_br"+e(h==l||h==l+1&&i.start.column,d>u,d>g,h==c),r,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,o){var r=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=r+t.start.column*n.characterWidth;o=o||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"), -s=(t.end.row-t.start.row-1)*n.lineHeight,!(0>=s)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);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(r.prototype),t.Marker=r}),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,i){"use strict";var n=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),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?""+r.stringRepeat(this.TAB_CHAR,i)+"":r.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",o="",s="";if(this.showInvisibles){n+=" ace_invisible",o=" ace_invisible_space",s=" ace_invisible_tab";var a=r.stringRepeat(this.SPACE_CHAR,this.tabSize),l=r.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=r.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 n=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=o.createElement("div"),c=[];if(this.$renderLine(c,r,!1,r==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(r)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);r++}return n},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 o=this,s=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\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,a){if(i)return o.showInvisibles?""+r.stringRepeat(o.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if(" "==e){var l=o.session.getScreenTabSize(t+s);return t+=l-1,o.$tabStrings[l]}if(" "==e){var c=o.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=o.showInvisibles?o.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+o.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(r.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(r.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var o=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,u.substring(0,a-o)),u=u.substring(a-o),o=a,n||e.push("","
"),e.push(r.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=u.length&&(o+=u.length,l=this.$renderToken(e,l,h,u))}}},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(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),o.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).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||n||(this.smoothBlinking=e,o.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=o.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,o.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,o.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&o.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){o.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;this.drawCursor?this.drawCursor(s,r,e,t[i],this.session):(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.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?o.addCssClass(this.element,"ace_overwrite-cursors"):o.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(r.prototype),t.Cursor=r}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./lib/dom"),r=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=o.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=o.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,r.addListener(this.element,"scroll",this.onScroll.bind(this)),r.addListener(this.element,"mousedown",r.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=o.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),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(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),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(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),o=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;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(o.prototype),t.RenderLoop=o}),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,i){var n=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e,t){this.el=o.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=o.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=o.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=r.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=o.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.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&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/l}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=r.stringRepeat(e,l);var t=this.$main.getBoundingClientRect();return t.width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(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(c.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,i){"use strict";var n=e("./lib/oop"),o=e("./lib/dom"),r=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,u=e("./scrollbar").HScrollBar,d=e("./scrollbar").VScrollBar,g=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,p=e("./lib/event_emitter").EventEmitter,m='.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; white-space: pre!important; } .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; word-wrap: normal; 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; transform: translatez(0); } .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; } .ace_br1 {border-top-left-radius : 3px;} .ace_br2 {border-top-right-radius : 3px;} .ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} .ace_br4 {border-bottom-right-radius: 3px;} .ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} .ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} .ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} .ace_br8 {border-bottom-left-radius : 3px;} .ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} .ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} .ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} '; -o.importCssString(m,"ace_editor.css");var v=function(e,t){var i=this;this.container=e||o.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,o.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=o.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=o.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=o.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new u(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 f(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 g(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),r.resetOptions(this),r._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,n.implement(this,p),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.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},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=o.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=o.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.scroller},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.textarea.style,o=this.lineHeight;if(0>t||t>e.height-o)return void(n.top=n.left="0");var r=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");r*=this.session.$getStringScreenWidth(s)[0]+2,o+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-r&&(i=this.$size.scrollerWidth-r),i+=this.gutterWidth,n.height=o+"px",n.width=r+"px",n.left=Math.min(i,this.$size.scrollerWidth-r)+"px",n.top=Math.min(t,this.$size.height-o)+"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.$vScrollBarAlwaysVisible},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);this.$horizScroll&&(i+=this.scrollBarH.getHeight());var 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(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),o=n*this.lineHeight,r=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-r-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,u=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;o+=u;var d=this.scrollMargin;this.session.setScrollTop(Math.max(-d.top,Math.min(this.scrollTop,o-t.scrollerHeight+d.bottom))),this.session.setScrollLeft(Math.max(-d.left,Math.min(this.scrollLeft,r+2*this.$padding-t.scrollerWidth+d.right)));var g=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-o+u<0||this.scrollTop>d.top),f=l!==g;f&&(this.$vScroll=g,this.scrollBarV.setVisible(g));var p,m,v=Math.ceil(h/this.lineHeight)-1,A=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),w=A+v,C=this.lineHeight;A=e.screenToDocumentRow(A,0);var E=e.getFoldLine(A);E&&(A=E.start.row),p=e.documentToScreenRow(A,0),m=e.getRowLength(A)*C,w=Math.min(e.screenToDocumentRow(w,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(w)*C+m,c=this.scrollTop-p*C;var F=0;return this.layerConfig.width!=r&&(F=this.CHANGE_H_SCROLL),(a||f)&&(F=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),f&&(r=this.$getLongestLine())),this.layerConfig={width:r,padding:this.$padding,firstRow:A,firstRowScreen:p,lastRow:w,lineHeight:C,characterWidth:this.characterWidth,minHeight:h,maxHeight:o,offset:c,gutterOffset:Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/C)),height:this.$size.scrollerHeight},F},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(){o.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){o.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,o.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(o.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(n.$themeId!=e)return t&&t();if(i.cssClass){o.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&o.removeCssClass(n.container,n.theme.cssClass);var r="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&r!=n.$padding&&n.setPadding(r),n.$theme=i.cssClass,n.theme=i,o.addCssClass(n.container,i.cssClass),o.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;r.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){o.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){o.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(v.prototype),r.defineOptions(v.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){o.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=o.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){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(e){this.updateFull()}},minLines:{set:function(e){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=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var o=e("../lib/oop"),r=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=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),a.get("packaged")||!e.toUrl)r=r||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;r=r||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(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(){o.implement(this,s),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 r.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=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+r.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,o=new n;return o.append(t),o.getBlob("application/javascript")}}}).call(l.prototype);var c=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,r=Object.create(s),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&&r._signal(e.event,e.data)};r.postMessage=function(e){l.onMessage({data:e})},r.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},r.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](r);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,o=e("./lib/event_emitter").EventEmitter,r=e("./lib/oop"),s=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(){r.implement(this,o),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var o=this.pos;o.$insertRight=!0,o.detach(),o.markerId=i.addMarker(new n(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,r=t.start.column-this.pos.column;if(this.updateAnchors(e),o&&(this.length+=i),o&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,o){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),o,null,!1)};i(this.pos,this.mainClass);for(var o=this.others.length;o--;)i(this.others[o],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.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.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;t>i;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){function n(e,t){return e.row==t.row&&e.column==t.column}function o(e){var t=e.domEvent,i=t.altKey,o=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!i&&!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()&&n(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&&i||l&&i?h=o?"block":"add":i&&u.$blockSelectEnabled&&(h="block");else if(l&&!i){if(h="add",!g&&o)return}else i&&u.$blockSelectEnabled&&(h="block");if(h&&s.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,o&&(b=null,y=d.ranges[0]||y,u.removeSelectionMarker(y)),u.once("mouseup",function(){var e=d.toOrientedRange();b&&e.isEmpty()&&n(b.cursor,e.cursor)?d.substractPoint(e.cursor):(o?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);n(F,e)&&n(t,d.lead)||(F=e,u.$blockScrolling++,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(),u.$blockScrolling--)};u.$blockScrolling++,g&&!l?d.toSingleRange():!g&&l&&(x=d.toOrientedRange(),u.addSelectionMarker(x)),o?E=C.documentToScreenPosition(d.lead):d.moveToPosition(f),u.$blockScrolling--,F={row:-1,column:-1};var B=function(e){clearInterval(k),u.removeSelectionMarkers(S),S.length||(S=[d.toOrientedRange()]),u.$blockScrolling++,x&&(u.removeSelectionMarker(x),d.toSingleRange(x));for(var t=0;t1&&!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 a,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=l.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,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.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=l.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 n=[],r=e.columns&&(s=0),0>h&&(h=0),h==u&&(i=!0);for(var d=h;u>=d;d++){var g=l.fromPoints(this.session.screenToDocumentPosition(d,s),this.session.screenToDocumentPosition(d,a));if(g.isEmpty()){if(f&&o(g.end,f))break;var f=g.end}g.cursor=r?g.start:g.end,n.push(g)}if(c&&n.reverse(),!i){for(var p=n.length-1;n[p].isEmpty()&&p>0;)p--;if(p>0)for(var m=0;n[m].isEmpty();)m++;for(var v=p;v>=m;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=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(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(g.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(g.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,l=a.rangeList,h=(o?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var u=a._eventRegistry;a._eventRegistry={};var d=new c(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;ne?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,i){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),!i)){var a=o.getTextRange(s),l=n(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,a=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=a[i]-s;o>c?e.insert(n,d.stringRepeat(" ",o-c)):e.remove(new l(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,u=c.end.row,g=h==u;if(g){var f,p=this.session.getLength();do f=this.session.getLine(u);while(/[=:]/.test(f)&&++u0);0>h&&(h=0),u>=p&&(u=p-1)}var m=this.session.removeFullLines(h,u);m=this.$reAlignText(m,g),this.session.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 d.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(v.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=r,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){r(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,o=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(e,t,i){return null},this.indentationBlock=function(e,t,i){var o=/\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=i||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 n(c,a,h,d)}}},this.openingBracketBlock=function(e,t,i,o,r){var s={row:i,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),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,o,r){var s={row:i,column:o},a=e.$findOpeningBracket(t,s);return a?(a.column++,s.column--,n.fromPoints(a,s)):void 0}}).call(o.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"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; } .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 n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(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("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var o=(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&&!t.hidden&&(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(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,o=n.start.row,r=n.end.row,s="add"==e.action,a=o+1;r>a;a++)i[a]&&(i[a].hidden=s);i[r]&&(s?i[o]?i[r].hidden=s:i[o]=i[r]:(i[o]==i[r]&&(i[o]=void 0),i[r].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.start.row,n=e.end.row-i;if(0===n);else if("remove"==e.action){var o=t.splice(i+1,n);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var r=new Array(n);r.unshift(i,0),t.splice.apply(t,r),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){if(e)for(t=!1,e.row=i;e.$oldWidget;)e.$oldWidget.row=i,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var i=this.editor.renderer;e.html&&!e.el&&(e.el=o.createElement("div"),e.el.innerHTML=e.html),e.el&&(o.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,i.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/i.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var r=this.session.lineWidgets;e.row!=n.end.row||r[n.start.row]?e.hidden=!0:r[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,i),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var i=this.session.lineWidgets[e.row];if(i==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;i;){if(i.$oldWidget==e){i.$oldWidget=e.$oldWidget;break}i=i.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,i=t&&t[e],n=[];i;)n.push(i),i=i.$oldWidget;return n},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)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{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.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(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 o(e,t,i){var o=e.getAnnotations().sort(a.comparePoints);if(o.length){var r=n(o,{row:t,column:-1},a.comparePoints);0>r&&(r=-r-1),r>=o.length?r=i>0?0:o.length-1:0===r&&0>i&&(r=o.length-1);var s=o[r];if(s&&i){if(s.row===t){do s=o[r+=i];while(s&&s.row===t);if(!s)return o.slice()}var l=[];t=s.row;do l[0>i?"unshift":"push"](s),s=o[r+=i];while(s&&s.row==t);return l.length&&l}}}var r=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range; -t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new r(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=o(i,a,t);if(h){var u=h[0];n.column=(u.pos&&"number"!=typeof u.column?u.pos.sc:u.column)||0,n.row=u.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var d={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},g=d.el.appendChild(s.createElement("div")),f=d.el.appendChild(s.createElement("div"));f.className="error_widget_arrow "+c.className;var p=e.renderer.$cursorLayer.getPixelPosition(n).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(s.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})},s.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,i){"use strict";e("./lib/fixoldbrowsers");var n=e("./lib/dom"),o=e("./lib/event"),r=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=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 i=e;if(e=document.getElementById(i),!e)throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=n.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=n.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new r(new l(e));h.setSession(c);var u={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(u.textarea=a),o.addListener(window,"resize",u.onResize),h.on("destroy",function(){o.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 s(e,t);return i.setUndoManager(new a),i},t.EditSession=s,t.UndoManager=a,t.version="1.2.2"}),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,i){"use strict";var n=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=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"}]}};n.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var i=e.getLine(t),o=i.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 n(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},u=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t]?n=h[t]:void(n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},d=function(e,t,i,n){var o=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},g=function(){this.add("braces","insertion",function(e,t,i,o,r){var s=i.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){u(i);var c=i.getSelectionRange(),h=o.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return d(c,h,"{","}");if(g.isSaneInsertion(i,o))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(g.recordAutoInsert(i,o,"}"),{text:"{}",selection:[1,1]}):(g.recordMaybeInsert(i,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){u(i);var f=l.substring(s.column,s.column+1);if("}"==f){var p=o.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==p&&g.isAutoInsertedClosing(s,l,r))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){u(i);var m="";g.isMaybeInsertedClosing(s,l)&&(m=a.stringRepeat("}",n.maybeInsertedBrackets),g.clearMaybeInsertedClosing());var f=l.substring(s.column,s.column+1);if("}"===f){var v=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var A=this.$getIndent(o.getLine(v.row))}else{if(!m)return void g.clearMaybeInsertedClosing();var A=this.$getIndent(l)}var w=A+o.getTabString();return{text:"\n"+w+"\n"+A+m,selection:[1,w.length,1,w.length]}}g.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){u(i);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;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,o){if("("==o){u(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return d(r,s,"(",")");if(g.isSaneInsertion(i,n))return g.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==o){u(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&g.isAutoInsertedClosing(a,l,o))return g.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){u(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){u(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return d(r,s,"[","]");if(g.isSaneInsertion(i,n))return g.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){u(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&g.isAutoInsertedClosing(a,l,o))return g.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){u(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){u(i);var r=o,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return d(s,a,r,r);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),g=c.substring(l.column,l.column+1),f=n.getTokenAt(l.row,l.column),p=n.getTokenAt(l.row,l.column+1);if("\\"==h&&f&&/escape/.test(f.type))return null;var m,v=f&&/string|escape/.test(f.type),A=!p||/string|escape/.test(p.type);if(g==r)m=v!==A;else{if(v&&!A)return null;if(v&&A)return null;var w=n.$mode.tokenRe;w.lastIndex=0;var C=w.test(h);w.lastIndex=0;var E=w.test(h);if(C||E)return null;if(g&&!/[\s;,.})\]\\]/.test(g))return null;m=!0}return{text:m?r+r:"",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)){u(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}})};g.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var o=new s(t,i.row,i.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},g.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},g.recordAutoInsert=function(e,t,i){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=o.row,n.autoInsertedLineEnd=i+r.substr(o.column),n.autoInsertedBrackets++},g.recordMaybeInsert=function(e,t,i){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=o.row,n.maybeInsertedLineStart=r.substr(0,o.column)+i,n.maybeInsertedLineEnd=r.substr(o.column),n.maybeInsertedBrackets++},g.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},g.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},g.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},g.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},o.inherits(g,r),t.CstyleBehaviour=g}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=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)))};n.inherits(s,r),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var o=this._getFoldWidgetBase(e,t,i);return!o&&this.startRegionRe.test(n)?"start":o},this.getFoldWidgetRange=function(e,t,i,n){var o=e.getLine(i);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,i);var 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),n=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(n==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),r=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is?new o(s,n,h,t.length):void 0}}.call(s.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,n){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,u=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(u,r),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 h(["ace"],i(17),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(u.prototype),t.Mode=u})},function(e,t,i){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,i){"use strict";var n=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=" .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; 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; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");n.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),h=function(e,t,i){var o=n.createElement("div");o.innerHTML=c,this.element=o.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;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.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),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,i,n){var o=l.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.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(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.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,i){var o=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),r=!o&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),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;n.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.find(!1,!1,!0),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(h.prototype),t.SearchBox=h,t.Search=function(e,t){var i=e.searchBox||new h(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,i){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,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 acequire(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;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[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={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){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.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(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/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/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["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/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(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row: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/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},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){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){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;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;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 deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(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(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="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(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.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\n}()){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;for(;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,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.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","onChange","onEditable","onError","onModeChange","escapeUnicode","history","mode","modes","name","indentation","theme"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}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),a=r.mode;r.mode=e;var l=n.modes[e];if(!l)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==l.data;if(i=this.getName(),t=this[c?"getText":"get"](),this._delete(),s.clear(this),s.extend(this,l.mixin),this.create(o,r),this.setName(i),this[c?"setText":"set"](t),"function"==typeof l.load)try{l.load.call(this)}catch(h){console.error(h)}if("function"==typeof r.onModeChange&&e!==a)try{r.onModeChange(e,a)}catch(h){console.error(h)}}catch(h){this._onError(h)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.registerMode=function(e){var t,i;if(s.isArray(e))for(t=0;te&&i.scrollTop>0?this.autoScrollStep=(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)},h._createFrame=function(){function e(e){t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,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,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.className="jsoneditor-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="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var o=document.createElement("button");o.className="jsoneditor-undo jsoneditor-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="jsoneditor-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 a=l.create(this,this.options.modes,this.options.mode);this.menu.appendChild(a),this.dom.modeBox=a}this.options.search&&(this.searchBox=new r(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this.options.onChange&&this.options.onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this.options.onChange&&this.options.onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(u=e.target),"mousedown"==e.type&&this._startDragDistance(e),("mousemove"==e.type||"mouseup"==e.type||"click"==e.type)&&this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getPath(),n=t.getPath(),o=0;o=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,t,i){function n(){this.locked=!1}n.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},n.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))}},n.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},n.prototype.lock=function(){this.locked=!0},n.prototype.unlock=function(){this.locked=!1},e.exports=n},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)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},appendNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.appendChild(t)})}},insertBeforeNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.insertBefore(t,e.beforeNode)})}},insertAfterNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(i){e.parent.insertAfter(e.node,t),t=i})}},removeNodes:{undo:function(e){var t=e.parent,i=t.childs[e.index]||t.append;e.nodes.forEach(function(e){t.insertBefore(e,i)})},redo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})}},duplicateNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(i){e.parent.insertAfter(i,t),t=i})}},moveNodes:{undo:function(e){e.nodes.forEach(function(t){e.oldBeforeNode.parent.moveBefore(t,e.oldBeforeNode)})},redo:function(e){e.nodes.forEach(function(t){e.newBeforeNode.parent.moveBefore(t,e.newBeforeNode)})}},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)}},n.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)}},n.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)})},n.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},n.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},n.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},n.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},n.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},n.prototype.clear=function(){this.dom.search.value="",this._onSearch()},e.exports=n},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="jsoneditor-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="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var h;if(o.click){l.className+=" jsoneditor-default";var d=document.createElement("button");s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),o.submenuTitle&&(d.title=o.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),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="jsoneditor-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="jsoneditor-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,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(document,"mousedown",function(e){var t=e.target;t==d||h._isChildOf(t,d)||(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,"jsoneditor-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,"jsoneditor-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?("jsoneditor-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&&"jsoneditor-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&&"jsoneditor-expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),r=t[i+1],r&&"jsoneditor-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,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(7),r=i(12),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.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getFieldsPath()});"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.getFieldsPath=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.getIndex=function(){return this.parent?this.parent.childs.indexOf(this):-1},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.getPath=function(){var e=this.parent?this.parent.getPath():[];return e.push(this),e},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="jsoneditor-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="jsoneditor-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.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 i.parent=null,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,t){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)&&("string"==e?this.value=String(this.value):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=["jsoneditor-value"],i=this.value,n="auto"==this.type?s.type(i):this.type,o="string"==n&&s.isUrl(i);t.push("jsoneditor-"+n),o&&t.push("jsoneditor-url");var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==n||"object"==n){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else o&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";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,"jsoneditor-empty"):s.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?s.addClassName(e,"jsoneditor-highlight-active"):s.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?s.addClassName(e,"jsoneditor-highlight"):s.removeClassName(e,"jsoneditor-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="jsoneditor-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="jsoneditor-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.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],o=e[e.length-1],r=n.getNodeFromTarget(t.target),a=o._nextSibling(),l=i.editor,c=s.getAbsoluteTop(r.dom.tr)-s.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=s.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=s.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:a,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,o,r,l,c,h,d,u,g,f,p,m,v,A,w=e[0].editor,C=t.pageY-w.drag.offsetY,E=t.pageX,y=!1,F=e[0];if(i=F.dom.tr,g=s.getAbsoluteTop(i),m=i.offsetHeight,g>C){o=i;do o=o.previousSibling,d=n.getNodeFromTarget(o),f=o?s.getAbsoluteTop(o):0;while(o&&f>C);d&&!d.parent&&(d=void 0),d||(h=i.parentNode.firstChild,o=h?h.nextSibling:void 0,d=n.getNodeFromTarget(o),d==F&&(d=void 0)),d&&(o=d.dom.tr,f=o?s.getAbsoluteTop(o):0,C>f+m&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),y=!0)}else{var b=e[e.length-1];if(c=b.expanded&&b.append?b.append.getDom():b.dom.tr,l=c?c.nextSibling:void 0){p=s.getAbsoluteTop(l),r=l;do u=n.getNodeFromTarget(r),r&&(v=r.nextSibling?s.getAbsoluteTop(r.nextSibling):0,A=r?v-p:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==b&&(g+=27)),r=r.nextSibling;while(r&&C>g+A);if(u&&u.parent){var x=E-w.drag.mouseX,S=Math.round(x/24/2),$=w.drag.level+S,D=u.getLevel();for(o=u.dom.tr.previousSibling;$>D&&o;){d=n.getNodeFromTarget(o);var B=e.some(function(e){return e===d||d._isChildOf(e)});if(B);else{if(!(d instanceof a))break;var k=d.parent.childs;if(k.length==e.length&&k[e.length-1]==b)break;u=n.getNodeFromTarget(o),D=u.getLevel()}o=o.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),y=!0)}}}y&&(w.drag.mouseX=E,w.drag.level=F.getLevel()),w.startAutoScroll(C),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],o=i.editor,r=i.parent,a=r.childs.indexOf(i),l=r.childs[a+e.length]||r.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:o.drag.oldSelection,newSelection:o.getSelection(),oldBeforeNode:o.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&o._onAction("moveNodes",c),document.body.style.cursor=o.drag.oldCursor,o.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&o.highlighter.unhighlight()}),delete o.drag,o.mousemove&&(s.removeEventListener(window,"mousemove",o.mousemove),delete o.mousemove),o.mouseup&&(s.removeEventListener(window,"mouseup",o.mouseup),delete o.mouseup),o.stopAutoScroll(),t.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&&(e?s.addClassName(this.dom.tr,"jsoneditor-highlight"):s.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-selected"):s.removeClassName(this.dom.tr,"jsoneditor-selected"),t?s.addClassName(this.dom.tr,"jsoneditor-first"):s.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(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="jsoneditor-field"):i.className="jsoneditor-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;"array"==this.type?(o.innerHTML="["+r+"]",s.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(o.innerHTML="{"+r+"}",s.addClassName(this.dom.tr,"jsoneditor-expandable")):(o.innerHTML=this._escapeHTML(this.value),s.removeClassName(this.dom.tr,"jsoneditor-expandable"))}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.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),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.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-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="jsoneditor-values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var o=document.createElement("td");o.className="jsoneditor-tree",n.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var r=document.createElement("td");r.className="jsoneditor-tree",n.appendChild(r),e.field=this._createDomField(),r.appendChild(e.field),e.tdField=r;var s=document.createElement("td");s.className="jsoneditor-tree",n.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-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()),"click"==i&&n==o.menu){var l=r.editor.highlighter;l.highlight(r),l.lock(),s.addClassName(o.menu,"jsoneditor-selected"),this.showContextMenu(o.menu,function(){s.removeClassName(o.menu,"jsoneditor-selected"),l.unlock(),l.unhighlight()})}if("click"==i&&(n==o.expand||("view"===r.editor.options.mode||"form"===r.editor.options.mode)&&"DIV"===n.nodeName)&&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 d=o.field;if(n==d)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(d.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 u=o.tree;if(n==u.parentNode&&"click"==i&&!e.hasMoved){var g=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],C=w[0],E=w[w.length-1];if(13==u){if(g==this.dom.value)(!this.editable.value||e.ctrlKey)&&s.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(g==this.dom.expand){var y=this._hasChilds();if(y){var F=e.ctrlKey;this._onExpand(F),g.focus(),v=!0}}}else if(68==u)f&&A&&(n.onDuplicate(w),v=!0);else if(69==u)f&&(this._onExpand(p),g.focus(),v=!0);else if(77==u&&A)f&&(this.showContextMenu(g),v=!0);else if(46==u&&A)f&&(n.onRemove(w),v=!0);else if(45==u&&A)f&&!p?(this._onInsertBefore(),v=!0):f&&p&&(this._onInsertAfter(),v=!0);else if(35==u){if(m){var b=this._lastNode();b&&b.focus(n.focusElement||this._getElementName(g)),v=!0}}else if(36==u){if(m){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(g)),v=!0}}else if(37==u){if(m&&!p){var S=this._previousElement(g);S&&this.focus(this._getElementName(S)),v=!0}else if(m&&p&&A){if(E.expanded){var $=E.getAppend();o=$?$.nextSibling:void 0}else{var D=E.getDom();o=D.nextSibling}o&&(i=n.getNodeFromTarget(o),r=o.nextSibling,L=n.getNodeFromTarget(r),i&&i instanceof a&&1!=E.parent.childs.length&&L&&L.parent&&(l=this.editor.getSelection(),c=E._nextSibling(),w.forEach(function(e){L.parent.moveBefore(e,L)}),this.focus(n.focusElement||this._getElementName(g)),this.editor._onAction("moveNodes",{nodes:w,oldBeforeNode:c,newBeforeNode:L,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(38==u)m&&!p?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(g))),v=!0):!m&&p?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):m&&p&&(t=C._previousNode(),t&&t.parent&&(l=this.editor.getSelection(),c=E._nextSibling(),w.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(g)),this.editor._onAction("moveNodes",{nodes:w,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(m&&!p){var B=this._nextElement(g);B&&this.focus(this._getElementName(B)),v=!0}else if(m&&p){D=C.getDom();var k=D.previousSibling;k&&(t=n.getNodeFromTarget(k),t&&t.parent&&t instanceof a&&!t.isVisible()&&(l=this.editor.getSelection(),c=E._nextSibling(),w.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(g)),this.editor._onAction("moveNodes",{nodes:w,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(40==u)if(m&&!p)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(g))),v=!0;else if(!m&&p)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(m&&p&&A){i=E.expanded?E.append?E.append._nextNode():void 0:E._nextNode();var L=i&&(i._nextNode()||i.parent.append);L&&L.parent&&(l=this.editor.getSelection(),c=E._nextSibling(),w.forEach(function(e){L.parent.moveBefore(e,L)}),this.focus(n.focusElement||this._getElementName(g)),this.editor._onAction("moveNodes",{nodes:w,oldBeforeNode:c,newBeforeNode:L,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();n.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:r,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:r,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onAppend=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype._onSort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,o=this.sort;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return e[i]>n[i]?t:e[i]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return this.editor.options.escapeUnicode===!0&&(n=s.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',i=s.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;i2&&F.push("'"+this.terminals_[C]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+F.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:F})}if(3==d){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(u.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=o[o.length-1]}m=p,p=u,v=o[o.length-1],A=a[v]&&a[v][u],d=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,d>0&&d--);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._$),y=a[o[o.length-2]][o[o.length-1]],o.push(y);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=n,t.parse=n.parse.bind(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="jsoneditor-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="jsoneditor-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:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-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,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){o.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=i(3),r=i(7);e.exports=n},function(e,t,i){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){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, consolas, 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: lightgray } .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 lightgray } .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 n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)})},function(e,t,i){!function(){function e(e){var t=i;e&&(i[e]||(i[e]={}),t=i[e]),t.define&&t.define.packaged||(n.original=t.define,t.define=n,t.define.packaged=!0),t.acequire&&t.acequire.packaged||(r.original=t.acequire,t.acequire=r,t.acequire.packaged=!0)}var t="ace",i=function(){return this}();if(i||"undefined"==typeof window||(i=window),t||"undefined"==typeof acequirejs){var n=function(e,t,i){return"string"!=typeof e?void(n.original?n.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())):(2==arguments.length&&(i=t),void(n.modules[e]||(n.payloads[e]=i,n.modules[e]=null)))};n.modules={},n.payloads={};var o=function(e,t,i){if("string"==typeof t){var n=a(e,t);if(void 0!=n)return i&&i(),n}else if("[object Array]"===Object.prototype.toString.call(t)){for(var o=[],s=0,l=t.length;l>s;++s){var c=a(e,t[s]);if(void 0==c&&r.original)return;o.push(c)}return i&&i.apply(null,o)||!0}},r=function(e,t){var i=o("",e,t);return void 0==i&&r.original?r.original.apply(this,arguments):i},s=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return s(e,i[0])+"!"+s(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},a=function(e,t){t=s(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var r={},a={id:t,uri:"",exports:r,packaged:!0},l=function(e,i){return o(t,e,i)},c=i(l,r,a);r=c||a.exports,n.modules[t]=r,delete n.payloads[t]}i=n.modules[t]=r||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,i){"use strict";function n(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function o(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&o(l,"")>-1&&(i=RegExp(this.source,r.replace.call(n(this),"g","")),r.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=r.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(e,t,i){function n(){}function o(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function r(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(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=f.call(arguments,1),o=function(){if(this instanceof o){var n=t.apply(this,i.concat(f.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(f.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,o.prototype=new n,n.prototype=null),o});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,g=Object.prototype,f=u.slice,p=d.bind(g.toString),m=d.bind(g.hasOwnProperty);if((h=m(g,"__defineGetter__"))&&(s=d.bind(g.__defineGetter__),a=d.bind(g.__defineSetter__),l=d.bind(g.__lookupGetter__),c=d.bind(g.__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 v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(f.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=f.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]"==p(e)});var A=Object("a"),w="a"!=A[0]||!(0 in A);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=arguments[1],o=-1,r=i.length>>>0;if("[object Function]"!=p(e))throw new TypeError;for(;++o>>0,o=Array(n),r=arguments[1];if("[object Function]"!=p(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=O(this),n=w&&"[object String]"==p(this)?this.split(""):i,o=n.length>>>0,r=[],s=arguments[1];if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0,o=arguments[1];if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=p(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=O(this),i=w&&"[object String]"==p(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=p(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=w&&"[object String]"==p(this)?this.split(""):O(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=r(arguments[1])),n=n>=0?n:Math.max(0,i+n);i>n;n++)if(n in t&&t[n]===e)return n;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=w&&"[object String]"==p(this)?this.split(""):O(this),i=t.length>>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,r(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:g)}),!Object.getOwnPropertyDescriptor){var C="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(C+e);if(m(e,t)){var i,n,o;if(i={enumerable:!0,configurable:!0},h){var r=e.__proto__;e.__proto__=g;var n=l(e,t),o=c(e,t);if(e.__proto__=r,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 E;E=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=E();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 y=o({}),F="undefined"==typeof document||o(document.createElement("div"));if(!y||!F)var b=Object.defineProperty}if(!Object.defineProperty||b){var x="Property description must be an object: ",S="Object.defineProperty called on non-object: ",$="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(S+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(x+i);if(b)try{return b.call(Object,e,t,i)}catch(n){}if(m(i,"value"))if(h&&(l(e,t)||c(e,t))){var o=e.__proto__;e.__proto__=g,delete e[t],e[t]=i.value,e.__proto__=o}else e[t]=i.value;else{if(!h)throw new TypeError($);m(i,"get")&&s(e,t,i.get),m(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)m(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(D){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(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";m(e,t);)t+="?";e[t]=!0;var i=m(e,t);return delete e[t],i}),!Object.keys){var B=!0,k=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],L=k.length;for(var _ in{toString:null})B=!1;Object.keys=function N(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var N=[];for(var t in e)m(e,t)&&N.push(t);if(B)for(var i=0,n=L;n>i;i++){var o=k[i];m(e,o)&&N.push(o)}return N}}Date.now||(Date.now=function(){return(new Date).getTime()});var R=" \n \f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||R.trim()){R="["+R+"]";var T=new RegExp("^"+R+R+"*"),M=new RegExp(R+R+"*$");String.prototype.trim=function(){return String(this).replace(T,"").replace(M,"")}}var O=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,t,i){ +"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";var n="http://www.w3.org/1999/xhtml";return 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||n,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?(o.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]:(o.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((o.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(o.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(o.split(" Chrome/")[1])||void 0,t.isAIR=o.indexOf("AdobeAIR")>=0,t.isIPad=o.indexOf("iPad")>=0,t.isTouchPad=o.indexOf("TouchPad")>=0,t.isChromeOS=o.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(a.OSKey&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var o="location"in t?t.location:t.keyLocation;if(17===i&&1===o)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===o){var h=t.timeStamp-l;50>h&&(a.altGr=!0)}}}if(i in r.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&93>=i&&(i=-1),!n&&13===i){var o="location"in t?t.location:t.keyLocation;if(3===o&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return n||i in r.FUNCTION_KEYS||i in r.PRINTABLE_KEYS?e(t,n,i):!1}function o(){a=Object.create(null),a.count=0,a.lastT=0}var r=e("./keys"),s=e("./useragent"),a=null,l=0;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||s.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.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,o;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,o=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,r=e.changedTouches[0];e.wheelX=-(r.clientX-n)/t,e.wheelY=-(r.clientY-o)/t,n=r.clientX,o=r.clientY,i(e)})}},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,o){var r,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,s.isIE){var d=Math.abs(e.clientX-r)>5||Math.abs(e.clientY-a)>5;(!l||d)&&(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(r=e.clientX,a=e.clientY)}if(e._clicks=c,n[o]("mousedown",e),c>4)c=0;else if(c>1)return n[o](h[c],e)}),s.isOldIE&&t.addListener(e,"dblclick",function(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[o]("mousedown",e),n[o](h[c],e)})};var c=!s.isMac||!s.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)};if(t.getModifierString=function(e){return r.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var r=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;r(e,"keydown",function(e){l=e.keyCode}),r(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;r(e,"keydown",function(e){var t=e.keyCode;a[t]=(a[t]||0)+1,91==t||92==t?a.OSKey=!0:a.OSKey&&e.timeStamp-a.lastT>200&&1==a.count&&o(),1==a[t]&&a.count++,a.lastT=e.timeStamp;var r=n(i,e,t);return c=e.defaultPrevented,r}),r(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),r(e,"keyup",function(e){var t=e.keyCode;a[t]?a.count=Math.max(a.count-1,0):o(),(91==t||92==t)&&(a.OSKey=!1),a[t]=null}),a||(o(),r(window,"focus",o))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){var h=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+h;t.addListener(i,"message",function o(r){r.data==n&&(t.stopPropagation(r),t.removeListener(i,"message",o),e())}),i.postMessage(n,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"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 n=/^\s\s*/,o=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(o,"")},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++)e[i]&&"object"==typeof e[i]?t[i]=this.copyObject(e[i]):t[i]=e[i];return t},t.deepCopy=function r(e){if("object"!=typeof e||!e)return e;var t;if(Array.isArray(e)){t=[];for(var i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(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 n.$blockScrolling++,s&&n.selection.moveToPosition(i),n.$blockScrolling--,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;i.$blockScrolling++,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"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,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 o=r(this.$clickSelection,i);i=o.cursor,e=o.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),o=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(o.start),a=this.$clickSelection.comparePoint(o.end);if(-1==s&&0>=a)t=this.$clickSelection.end,(o.end.row!=n.row||o.end.column!=n.column)&&(n=o.start);else if(1==a&&s>=0)t=this.$clickSelection.start,(o.start.row!=n.row||o.start.column!=n.column)&&(n=o.end);else if(-1==s&&1==a)n=o.end,t=o.start;else{var l=r(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,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=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>s||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(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.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}},this.onTouchMove=function(e){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(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var o=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=o.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){o.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){o.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(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,o=l.$annotations[t];if(!o)return i();var r=s.session.getLength();if(t==r){var a=s.renderer.pixelToScreenCoordinates(0,d.y).row,h=d.$pos;if(a>s.session.documentToScreenRow(h.row,h.column))return i()}if(u!=o)if(u=o.text.join("
"),c.setHtml(u),c.show(),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var g=d.domEvent.target,f=g.getBoundingClientRect(),p=c.getElement().style;p.left=f.right+"px",p.top=f.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new o(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,o=s.session.selection;if(t.getShiftKey())o.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(o){var s=o.domEvent.target||o.domEvent.srcElement;return r.hasCssClass(s,"ace_fold-widget")?i():(u&&e.$tooltipFollowsMouse&&n(o),d=o,void(h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function o(e){l.call(this,e)}var r=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(o,l),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),l.prototype.setPosition.call(this,e,t)}}.call(o.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),o=e("../lib/useragent"),r=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(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.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 n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=o.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(r.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,r=!t||e.column!=t.column;if(!D||n||r)m.$blockScrolling+=1,m.moveCursorToPosition(e),m.$blockScrolling-=1,D=i,B={x:C,y:E};else{var s=o(B.x,B.y,C,E);s>h?D=null:i-D>=c&&(m.renderer.scrollCursorIntoView(),D=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}},a=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>=a/o&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=l&&m.renderer.scrollCursorIntoView(h):$=i:$=null}function n(){var e=b;b=m.renderer.screenToTextCoordinates(C,E),t(b,e),i(b,e)}function d(){F=m.selection.toOrientedRange(),w=m.session.addMarker(F,"ace_selection",m.getSelectionStyle()),m.clearSelection(),m.isFocused()&&m.renderer.$cursorLayer.setBlinking(!1),clearInterval(y),n(),y=setInterval(n,20),L=0,s.addListener(document,"mousemove",g)}function u(){clearInterval(y),m.session.removeMarker(w),w=null,m.$blockScrolling+=1,m.selection.fromOrientedRange(F),m.$blockScrolling-=1,m.isFocused()&&!S&&m.renderer.$cursorLayer.setBlinking(!m.getReadOnly()),F=null,b=null,L=0,$=null,D=null,s.removeListener(document,"mousemove",g)}function g(){null==_&&(_=setTimeout(function(){null!=_&&w&&u()},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=a.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=r.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.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,y,F,b,x,S,$,D,B,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()}F=m.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=m.getReadOnly()?"copy":"copyMove",a.isOpera&&(m.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.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||d(),L++,e.dataTransfer.dropEffect=x=p(e),s.preventDefault(e)):void 0},this.onDragOver=function(e){return!m.getReadOnly()&&f(e.dataTransfer)?(C=e.clientX,E=e.clientY,w||(d(),L++),null!==_&&(_=null),e.dataTransfer.dropEffect=x=p(e),s.preventDefault(e)):void 0},this.onDragLeave=function(e){return L--,0>=L&&w?(u(),x=null,s.preventDefault(e)):void 0},this.onDrop=function(e){if(b){var t=e.dataTransfer;if(S)switch(x){case"move":F=F.contains(b.row,b.column)?{start:b,end:b}:m.moveText(F,b);break;case"copy":F=m.moveText(F,b,!0)}else{var i=t.getData("Text");F={start:b,end:m.session.insert(b,i)},m.focus(),x=null}return u(),s.preventDefault(e)}},s.addListener(k,"dragstart",this.onDragStart.bind(e)),s.addListener(k,"dragend",this.onDragEnd.bind(e)),s.addListener(k,"dragenter",this.onDragEnter.bind(e)),s.addListener(k,"dragover",this.onDragOver.bind(e)),s.addListener(k,"dragleave",this.onDragLeave.bind(e)),s.addListener(k,"drop",this.onDrop.bind(e));var _=null}function o(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var r=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=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(e){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=a.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.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(a.isWebKit){this.cancelDrag=!0;var s=t.container;s.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=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 i=n.getDocumentHead(),o=document.createElement("script");o.src=e,i.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,i){"use strict";var n={},o=function(){this.propagationStopped=!0},r=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=o),t.preventDefault||(t.preventDefault=r),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"),e("./lib/net")),l=e("./lib/app_config").AppConfig;n.exports=t=new l;var c=function(){return this||"undefined"!=typeof window&&window}(),h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return h[e]},t.set=function(e,t){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);h[e]=t},t.all=function(){return s.copyObject(h)},t.moduleUrl=function(e,t){if(h.$moduleUrls[e])return h.$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=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+o+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$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 l=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 a.loadScript(t.moduleUrl(i,r),l):l()}},o(!0),t.init=o}),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,i){"use strict";var n=e("../lib/event"),o=e("../lib/useragent"),r=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new r(this),new s(this),new l(this);var i=function(t){document.hasFocus&&document.hasFocus()||window.focus(),e.focus(),e.isFocused()||window.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener(a,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(n.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),n.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),o.isIE&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i))),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",function(t){return e.focus(),n.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 a(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 a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,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 i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var r=this,s=function(e){if(e){if(o.isWebKit&&!e.which&&r.releaseMouse)return r.releaseMouse();r.x=e.clientX,r.y=e.clientY,t&&t(e),r.mouseEvent=new a(e,r.editor),r.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),r[r.state+"End"]&&r[r.state+"End"](e),r.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$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(o.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});r.$onCaptureMouseMove=s,r.releaseMouse=n.capture(this.editor.container,s,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&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:o.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(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=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),o=e("../lib/event"),r=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,n){for(var r,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(r=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n),!(r&&r.command&&(s="null"==r.command?!0:a.exec(r.command,this.$editor,r.args,n),s&&n&&-1!=e&&1!=r.passEvent&&1!=r.command.passEvent&&o.stopEvent(n),s))););return s||-1!=e||(r={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal("keyboardActivity",r),s},this.onCommandKey=function(e,t,i){var o=n.keyCodeToString(i);this.$callKeyboardHandlers(t,o,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(r.prototype),t.KeyBinding=r}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},o=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 n={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()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.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 s(n,0,i,this.session.getLine(i).length):new s(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 n=this.session.getLine(t).substring(0,i);if(0===i){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var r=o.stringReverse(n),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>0||e>0)&&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 s.fromPoints(t,i)}catch(n){return s.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=s.fromPoints(e[t].start,e[t].end);e[t].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(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),o=2e3,r=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?c.onMatch=this.$applyToken:c.onMatch=c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+o+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),r[o]=l,o+=d,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){o=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"^"!=e.charAt(0)&&(e="^"+e),"$"!=e.charAt(e.length-1)&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var i=t.slice(0);t=i[0],"#tmp"===t&&(i.shift(),t=i.shift())}else var i=[];var n=t||"start",r=this.states[n];r||(n="start",r=this.states[n]);var s=this.matchMappings[n],a=this.regExps[n];a.lastIndex=0;for(var l,c=[],h=0,d=0,u={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);u.type==g?u.value+=v:(u.type&&c.push(u),u={type:g,value:v})}for(var A=0;Ao){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(r.prototype),t.Tokenizer=r}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),o=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},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),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,i){"use strict";var n=e("../tokenizer").Tokenizer,o=e("./text_highlight_rules").TextHighlightRules,r=e("./behaviour").Behaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=o,this.$behaviour=new r};(function(){this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new n(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,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),g=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),g=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var f=function(e,t){var i=e.match(u);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){(!s||/\S/.test(e))&&(A(e,c,c)?r.insertInLine({row:t,column:c},p):r.insertInLine({row:t,column:c},g))},v=function(e,t){return u.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,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(g)+")"),C=new RegExp("(?:"+a.escapeRegExp(w)+")\\s*$"),m=function(e,t){v(e,t)||(!s||/\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(u))&&r.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.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,s=!1,l=!1),d&&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,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,g;h&&/comment/.test(h.type);){var f=h.value.indexOf(o.start);if(-1!=f){var p=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+f;u=new c(p,m,p,m+o.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var f=h.value.indexOf(o.end);if(-1!=f){var p=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+f;g=new c(p,m,p,m+o.end.length);break}h=a.stepForward()}g&&t.remove(g),u&&(t.remove(u),r=u.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);d.start.row==r&&(d.start.column+=s),d.end.row==r&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){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(e,t,i,n){var o=this.$keywordList||this.$createKeywordList();return o.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(h.prototype),t.Mode=h}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,i){"use strict";t.applyDelta=function(e,t,i){var n=t.start.row,o=t.start.column,r=e[n]||"";switch(t.action){case"insert":var s=t.lines;if(1===s.length)e[n]=r.substring(0,o)+t.lines[0]+r.substring(o);else{var a=[n,1].concat(t.lines);e.splice.apply(e,a),e[n]=r.substring(0,o)+e[n],e[n+t.lines.length-1]+=r.substring(o)}break;case"remove":var l=t.end.column,c=t.end.row;n===c?e[n]=r.substring(0,o)+r.substring(l):e.splice(n,c-n+1,r.substring(0,o)+e[c].substring(l))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./lib/event_emitter").EventEmitter,r=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(){function e(e,t,i){var n=i?e.column<=t.column:e.columnthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var o={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:o,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=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(r.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./apply_delta").applyDelta,r=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,r),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=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){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:0>e?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},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=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var i;return i=t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),o(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,o=e.start.row,r=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=o+s,e.start.column=r;break}l.push(""),this.applyDelta({start:this.pos(o+s,r),end:this.pos(o+a,r=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},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(l.prototype),t.Document=l}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./lib/event_emitter").EventEmitter,r=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var i=this;this.$worker=function(){if(i.running){for(var e=new Date,t=i.currentLine,n=-1,o=i.doc,r=t;i.lines[t];)t++;var s=o.getLength(),a=0;for(i.running=!1;s>t;){i.$tokenizeRow(t),n=t;do t++;while(i.lines[t]);if(a++,a%5===0&&new Date-e>20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,n>=r&&i.fireUpdateEvent(r,n)}}};(function(){n.implement(this,o),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.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,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(r.prototype),t.BackgroundTokenizer=r}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),o=(e("./lib/oop"),e("./range").Range),r=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,i,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=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new o(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(i),this.clazz,r)}}}).call(r.prototype),t.SearchHighlight=r}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new o(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 o=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(n.prototype),t.FoldLine=n}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("./range").Range,o=n.comparePoints,r=function(){this.ranges=[]};(function(){this.comparePoints=o,this.pointIndex=function(e,t,i){for(var n=this.ranges,r=i||0;r0)){var l=o(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 o(e.start,t.start)});for(var i,n=t[0],r=1;rs||(0!=s||i.isEmpty()||n.isEmpty())&&(o(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(r,1),e.push(n),n=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){if("insert"==e.action)var t=e.start,i=e.end;else var i=e.start,t=e.end;for(var n=t.row,o=i.row,r=o-n,s=-t.column+i.column,a=this.ranges,l=0,c=a.length;c>l;l++){var h=a[l];if(!(h.end.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=r)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&c-1>l&&h.end.column>h.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=r}}}if(0!=r&&c>l)for(;c>l;l++){var h=a[l];h.start.row+=r,h.end.row+=r}}}).call(r.prototype),t.RangeList=r}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,i){"use strict";function n(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function o(e,t){n(e.start,t),n(e.end,t)}function r(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){r(e.start,t),r(e.end,t)}var a=(e("../range").Range,e("../range_list").RangeList),l=e("../lib/oop"),c=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=[]};l.inherits(c,a),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 c(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);o(e,this.start);for(var t=e.start.row,i=e.start.column,n=0,r=-1;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,o=!1;e instanceof s?i=e:(i=new s(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 d=this.getFoldAt(a,l,1),u=this.getFoldAt(c,h,-1);if(d&&u==d)return d.addSubFold(i);d&&!d.range.isStart(a,l)&&this.removeFold(d),u&&!u.range.isEnd(c,h)&&this.removeFold(u);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,n;if(null==e?(i=new o(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new o(e,0,e,this.getLine(e).length):"row"in e?o.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var r=n;r.length;)this.expandFolds(r),r=this.getFoldsInRangeList(i);return n.length?n: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 r(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 n=new a(this,e,t),r=n.getCurrentToken();if(r&&/^comment|string/.test(r.type)){var s=new o,l=new RegExp(r.type.replace(/\..*/,"\\."));if(1!=i){do r=n.stepBackward();while(r&&l.test(r.type));n.stepForward()}if(s.start.row=n.getCurrentTokenRow(),s.start.column=n.getCurrentTokenColumn()+2,n=new a(this,e,t),-1!=i){do r=n.stepForward();while(r&&l.test(r.type));r=n.stepBackward()}else r=n.getCurrentToken();return s.end.row=n.getCurrentTokenRow(),s.end.column=n.getCurrentTokenColumn()+r.value.length-2,s}},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.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("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.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},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,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var o=this.getFoldAt(t,this.getLine(t).length,1);o?this.removeFold(o):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var o=e("../range").Range,r=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){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,o=i.charAt(e.column-1),s=o&&o.match(/([\(\[\{])|([\)\]\}])/);if(s||(o=i.charAt(e.column),e={row:e.row,column:e.column+1},s=o&&o.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=r.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=r.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 n=this.$brackets[e],r=1,s=new o(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)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){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 n=this.$brackets[e],r=1,s=new o(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(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var d=c.charAt(l);if(d==n){if(r-=1,0==r)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else d==e&&(r+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var o=e("../token_iterator").TokenIterator,r=e("../range").Range;t.BracketMatch=n}),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,i){"use strict";var n=e("./lib/oop"),o=e("./lib/lang"),r=e("./config"),s=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,l=e("./mode/text").Mode,c=e("./range").Range,h=e("./document").Document,d=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,g=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 h(e)),this.setDocument(e),this.selection=new a(this),r.resetOptions(this),this.setMode(t),r._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}n.implement(this,s),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){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),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=o.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()?o.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.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},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 l=e.start,h=r.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(o.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.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.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(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 c(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.removeFullLines(e,t);return this.doc.insertFullLines(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.$useWrapMode&&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=this.$useWrapMode,i=e.action,n=e.start,o=e.end,r=n.row,s=o.row,a=s-r,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(r,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(o.row),d=0;if(h){h.addRemoveChars(o.row,o.column,n.column-o.column),h.shiftRow(-a);var u=this.getFoldLine(r);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=o.row&&h.shiftRow(-a)}s=r}else{var g=Array(a);g.unshift(r,0);var f=t?this.$wrapData:this.$rowLengthCache;f.splice.apply(f,g);var c=this.$foldData,h=this.getFoldLine(r),d=0;if(h){var p=h.range.compareInside(n.row,n.column);0==p?(h=h.split(n.row,n.column),h&&(h.shiftRow(a),h.addRemoveChars(s,0,o.column-n.column))):-1==p&&(h.addRemoveChars(r,0,o.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=r&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(r);h&&h.addRemoveChars(r,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(r,s):this.$updateRowLengthCache(r,s),l},this.$updateRowLengthCache=function(e,t,i){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,l=this.$wrapLimit,c=e;for(t=Math.min(t,o.length-1);t>=c;)n=this.getFoldLine(c,n),n?(i=[],n.walk(function(e,t,n,r){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=a;for(var l=1;lt-w;){var C=c+t-w;if(e[C-1]>=f&&e[C]>=f)r(C);else if(e[C]!=a&&e[C]!=h){for(var E=Math.max(C-(t-(t>>2)),c-1);C>E&&e[C]E&&e[C]E&&e[C]==g;)C--}else for(;C>E&&e[C]E?r(++C):(C=c+t,e[C]==i&&C--,r(C-w))}else{for(C;C!=c-1&&e[C]!=a;C--);if(C>c){r(C);continue}for(C=c+t;Cc;c++)s.push(m)}else 32==l?s.push(f):l>39&&48>l||l>57&&64>l?s.push(g):l>=4352&&e(l)?s.push(t,i):s.push(t)}return s},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.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[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],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,g=this.getNextFoldLine(o),f=g?g.start.row:1/0;e>=s&&(a=this.getRowLength(o),!(s+a>e||o>=u));)s+=a,o++,o>f&&(o=g.end.row+1,g=this.getNextFoldLine(o,g),f=g?g.start.row:1/0),d&&(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>u)return{row:u,column:this.getLine(u).length};i=this.getLine(o),g=null}var p=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){var v=Math.floor(e-s);n=m[v],v>0&&m.length&&(p=m.indent,r=m[v-1]||m[m.length-1],i=i.substring(r))}}return r+=this.$getStringScreenWidth(i,t-p)[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],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),g=u?u.start.row:1/0;e>a;){if(a>=g){if(s=u.end.row+1,s>e)break;u=this.getNextFoldLine(s,u),g=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var f="";u&&a>=g?(f=this.getFoldDisplayLine(u,e,t),o=u.start.row):(f=this.getLine(e).substring(0,t),o=e);var p=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){for(var v=0;f.length>=m[v];)n++,v++;f=f.substring(m[v-1]||0,f.length),p=v>0?m.indent:0}}return{row:n,column:p+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;oi));r++);return[n,r]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(g.prototype),e("./edit_session/folding").Folding.call(g.prototype),e("./edit_session/bracket_match").BracketMatch.call(g.prototype),r.defineOptions(g.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null; +this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=g}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),o=e("./lib/oop"),r=e("./range").Range,s=function(){this.$options={}};(function(){this.set=function(e){return o.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,o){if(e.start)n=e;else{var s=e.offset+(o||0);if(n=new r(i,s,i,s+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,o=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=o.length-c;e:for(var d=a.offset||0;h>=d;d++){for(var u=0;c>u;u++)if(-1==o[d+u].search(a[u]))continue e;var g=o[d],f=o[d+c-1],p=g.length-g.match(a[0])[0].length,m=f.match(a[c-1])[0].length;l&&l.end.row===d&&l.end.column>p||(s.push(l=new r(d,p,d+c-1,m)),c>2&&(d=d+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[u].end.column>E&&s[u].end.row==i.end.row;)u--;for(s=s.slice(v,u+1),v=0,u=s.length;u>v;v++)s[v].start.row+=i.start.row,s[v].end.row+=i.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];s&&s.toLowerCase()!=s?t[r]=t[r].toUpperCase():t[r]=t[r].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var i=this.$assembleRegExp(t);if(!i)return!1;var o;if(t.$isMultiLine)var s=i.length,a=function(t,n,a){var l=t.search(i[0]);if(-1!=l){for(var c=1;s>c;c++)if(t=e.getLine(n+c),-1==t.search(i[c]))return;var h=t.match(i[s-1])[0].length,d=new r(n,l,n+s-1,h);return 1==i.offset?(d.start.row--,d.start.column=Number.MAX_VALUE):a&&(d.start.column+=a),o(d)?!0:void 0}};else if(t.backwards)var a=function(e,t,r){for(var s=n.getMatchOffsets(e,i),a=s.length-1;a>=0;a--)if(o(s[a],t,r))return!0};else var a=function(e,t,r){for(var s=n.getMatchOffsets(e,i),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(s.prototype),t.Search=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function o(e,t){n.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),s=e("../lib/useragent"),a=r.KEY_MODS;o.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}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&&(void 0==i&&(i=e.position),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=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var r=this.parseKeys(e),s=a[r.hashId]+r.key;this._addCommandToBinding(n+s,t,i)},this):void 0},this._addCommandToBinding=function(t,i,n){var o,r=this.commandKeyBinding;if(i)if(!r[t]||this.$singleCommand)r[t]=i;else{Array.isArray(r[t])?-1!=(o=r[t].indexOf(i))&&r[t].splice(o,1):r[t]=[r[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=r[t];for(o=0;on)break}s.splice(o,0,i)}else delete r[t]},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=r[i];if(r.FUNCTION_KEYS[n])i=r.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 o=0,s=t.length;s--;){var a=r.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;o|=a}return{key:i,hashId:o}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(0>n)){var o=a[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&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-o.length-1)),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=o}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),o=e("../keyboard/hash_handler").MultiHashHandler,r=e("../lib/event_emitter").EventEmitter,s=function(e,t){o.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,o),function(){n.implement(this,r),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(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var o=e("../lib/lang"),r=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){r.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","Ctrl-E"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("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:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){r.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:n("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("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:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("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:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("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:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},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:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("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:n("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("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(o.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("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:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),r=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<=n.row+1;h++){var d=o.stringTrimLeft(o.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(r=e.session.doc.getLine(i.row).length>r?r+1:r,e.selection.moveCursorTo(i.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(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 r=0;r0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),o=this.renderer.layerConfig;(n.start.row>=o.lastRow||n.end.row<=o.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&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;v.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){this.curOp&&this.endOperation(),this.curOp={};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}),this.curOp=null,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")||o.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 g(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 A(e.session,i.row,i.column),o=n.getCurrentToken();if(!o||!/\b(?:tag-open|tag-name)/.test(o.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==o.type.indexOf("tag-open")||(o=n.stepForward())){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 g(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=this.session.$useWrapMode,i=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,i,t),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||(v.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),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 g(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(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var o=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(o),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,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var o=n.length;o--;){var r=n[o];r.isEmpty()||this.session.remove(r),this.session.insert(r.start,i[o])}}},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 g.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),d=n.checkOutdent(h,a,e);i.insert(o,e);if(r&&r.selection&&this.selection.setSelectionRange(2==r.selection.length?new g(o.row,c+r.selection[0],o.row,c+r.selection[1]):new g(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3])),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,o.column),i.getTabString());i.insert({row:o.row+1,column:0},u)}d&&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 g(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 g(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 g(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=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,i=e.getRange(),n=e.isBackwards();if(i.isEmpty()){var o=i.start.row;t.duplicateLines(o,o)}else{var r=n?i.start:i.end,s=t.insert(r,t.getTextRange(i),!1);i.start=r,i.end=s,e.setSelectionRange(i,n)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,i){return this.session.moveText(e,t,i)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var i,n,o=this.selection;if(!o.inMultiSelectMode||this.inVirtualSelectionMode){var r=o.toOrientedRange();i=this.$getSelectedRows(r),n=this.session.$moveLines(i.first,i.last,t?0:e),t&&-1==e&&(n=0),r.moveBy(n,0),o.fromOrientedRange(r)}else{var s=o.rangeList.ranges;o.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,h=0;c>h;h++){var d=h;s[h].moveBy(a,0),i=this.$getSelectedRows(s[h]);for(var u=i.first,g=i.last;++hg+1)break;g=f.last}for(h--,a=this.session.$moveLines(u,g,t?0:e),t&&-1==e&&(d=h+1);h>=d;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}o.fromOrientedRange(o.ranges[0]),o.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){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 A(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,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};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,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.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,i),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,o.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(w.prototype),v.defineOptions(w.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(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){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",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=w}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),o=e("../lib/oop"),r=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.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(){o.implement(this,s),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=n.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=n.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(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}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 ace_br15",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(t,i,o,r,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,g=a.getScreenLastRowColumn(h),f=new n(h,i.start.column,h,u);c>=h;h++)f.start.row=f.end.row=h,f.start.column=h==l?i.start.column:a.getRowWrapIndent(h),f.end.column=g,d=u,u=g,g=c>h+1?a.getScreenLastRowColumn(h+1):h==c?0:i.end.column,this.drawSingleLineMarker(t,f,o+(h==l?" ace_start":"")+" ace_br"+e(h==l||h==l+1&&i.start.column,u>d,u>g,h==c),r,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,o){var r=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=r+t.start.column*n.characterWidth;o=o||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,!(0>=s)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);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(r.prototype),t.Marker=r}),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,i){"use strict";var n=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),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?""+r.stringRepeat(this.TAB_CHAR,i)+"":r.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",o="",s="";if(this.showInvisibles){n+=" ace_invisible",o=" ace_invisible_space",s=" ace_invisible_tab";var a=r.stringRepeat(this.SPACE_CHAR,this.tabSize),l=r.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=r.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 d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.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 n=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=o.createElement("div"),c=[];if(this.$renderLine(c,r,!1,r==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(r)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);r++}return n},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 o=this,s=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\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,a){if(i)return o.showInvisibles?""+r.stringRepeat(o.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if(" "==e){var l=o.session.getScreenTabSize(t+s);return t+=l-1,o.$tabStrings[l]}if(" "==e){var c=o.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=o.showInvisibles?o.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+o.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(r.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(r.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var o=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-o)),d=d.substring(a-o),o=a,n||e.push("","
"),e.push(r.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(o+=d.length,l=this.$renderToken(e,l,h,d))}}},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(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),o.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).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||n||(this.smoothBlinking=e,o.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=o.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,o.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,o.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&o.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){o.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;this.drawCursor?this.drawCursor(s,r,e,t[i],this.session):(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.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?o.addCssClass(this.element,"ace_overwrite-cursors"):o.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(r.prototype),t.Cursor=r}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),o=e("./lib/dom"),r=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=o.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=o.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,r.addListener(this.element,"scroll",this.onScroll.bind(this)),r.addListener(this.element,"mousedown",r.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=o.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),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(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),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(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),o=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;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(o.prototype),t.RenderLoop=o}),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,i){var n=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e,t){this.el=o.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=o.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=o.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=r.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=o.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.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&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/l}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=r.stringRepeat(e,l);var t=this.$main.getBoundingClientRect();return t.width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(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(c.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,i){"use strict";var n=e("./lib/oop"),o=e("./lib/dom"),r=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,g=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,p=e("./lib/event_emitter").EventEmitter,m='.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; white-space: pre!important; } .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; word-wrap: normal; 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; transform: translatez(0); } .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; } .ace_br1 {border-top-left-radius : 3px;} .ace_br2 {border-top-right-radius : 3px;} .ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} .ace_br4 {border-bottom-right-radius: 3px;} .ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} .ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} .ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} .ace_br8 {border-bottom-left-radius : 3px;} .ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} .ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} .ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} '; +o.importCssString(m,"ace_editor.css");var v=function(e,t){var i=this;this.container=e||o.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,o.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=o.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=o.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=o.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(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 f(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 g(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),r.resetOptions(this),r._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,n.implement(this,p),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.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},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=o.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=o.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.scroller},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.textarea.style,o=this.lineHeight;if(0>t||t>e.height-o)return void(n.top=n.left="0");var r=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");r*=this.session.$getStringScreenWidth(s)[0]+2,o+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-r&&(i=this.$size.scrollerWidth-r),i+=this.gutterWidth,n.height=o+"px",n.width=r+"px",n.left=Math.min(i,this.$size.scrollerWidth-r)+"px",n.top=Math.min(t,this.$size.height-o)+"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.$vScrollBarAlwaysVisible},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);this.$horizScroll&&(i+=this.scrollBarH.getHeight());var 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(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),o=n*this.lineHeight,r=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-r-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;o+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,o-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,r+2*this.$padding-t.scrollerWidth+u.right)));var g=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-o+d<0||this.scrollTop>u.top),f=l!==g;f&&(this.$vScroll=g,this.scrollBarV.setVisible(g));var p,m,v=Math.ceil(h/this.lineHeight)-1,A=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),w=A+v,C=this.lineHeight;A=e.screenToDocumentRow(A,0);var E=e.getFoldLine(A);E&&(A=E.start.row),p=e.documentToScreenRow(A,0),m=e.getRowLength(A)*C,w=Math.min(e.screenToDocumentRow(w,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(w)*C+m,c=this.scrollTop-p*C;var y=0;return this.layerConfig.width!=r&&(y=this.CHANGE_H_SCROLL),(a||f)&&(y=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),f&&(r=this.$getLongestLine())),this.layerConfig={width:r,padding:this.$padding,firstRow:A,firstRowScreen:p,lastRow:w,lineHeight:C,characterWidth:this.characterWidth,minHeight:h,maxHeight:o,offset:c,gutterOffset:Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/C)),height:this.$size.scrollerHeight},y},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(){o.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){o.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,o.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(o.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(n.$themeId!=e)return t&&t();if(i.cssClass){o.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&o.removeCssClass(n.container,n.theme.cssClass);var r="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&r!=n.$padding&&n.setPadding(r),n.$theme=i.cssClass,n.theme=i,o.addCssClass(n.container,i.cssClass),o.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;r.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){o.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){o.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(v.prototype),r.defineOptions(v.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){o.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=o.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){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(e){this.updateFull()}},minLines:{set:function(e){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=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var o=e("../lib/oop"),r=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=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),a.get("packaged")||!e.toUrl)r=r||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;r=r||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(19),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(g){if(!(g instanceof window.DOMException))throw g;var d=this.$workerBlob(r),f=window.URL||window.webkitURL,p=f.createObjectURL(d);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(){o.implement(this,s),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 r.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=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+r.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,o=new n;return o.append(t),o.getBlob("application/javascript")}}}).call(l.prototype);var c=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,r=Object.create(s),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&&r._signal(e.event,e.data)};r.postMessage=function(e){l.onMessage({data:e})},r.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},r.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](r);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,o=e("./lib/event_emitter").EventEmitter,r=e("./lib/oop"),s=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(){r.implement(this,o),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var o=this.pos;o.$insertRight=!0,o.detach(),o.markerId=i.addMarker(new n(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,r=t.start.column-this.pos.column;if(this.updateAnchors(e),o&&(this.length+=i),o&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,o){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),o,null,!1)};i(this.pos,this.mainClass);for(var o=this.others.length;o--;)i(this.others[o],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.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.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;t>i;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){function n(e,t){return e.row==t.row&&e.column==t.column}function o(e){var t=e.domEvent,i=t.altKey,o=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!i&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,d=e.editor,u=d.selection,g=d.inMultiSelectMode,f=e.getDocumentPosition(),p=u.getCursor(),m=e.inSelection()||u.isEmpty()&&n(f,p),v=e.x,A=e.y,w=function(e){v=e.clientX,A=e.clientY},C=d.session,E=d.renderer.pixelToScreenCoordinates(v,A),y=E;if(d.$mouseHandler.$enableJumpToDef)a&&i||l&&i?h=o?"block":"add":i&&d.$blockSelectEnabled&&(h="block");else if(l&&!i){if(h="add",!g&&o)return}else i&&d.$blockSelectEnabled&&(h="block");if(h&&s.isMac&&t.ctrlKey&&d.$mouseHandler.cancelContextMenu(),"add"==h){if(!g&&m)return;if(!g){var F=u.toOrientedRange();d.addSelectionMarker(F)}var b=u.rangeList.rangeAtPoint(f);d.$blockScrolling++,d.inVirtualSelectionMode=!0,o&&(b=null,F=u.ranges[0]||F,d.removeSelectionMarker(F)),d.once("mouseup",function(){var e=u.toOrientedRange();b&&e.isEmpty()&&n(b.cursor,e.cursor)?u.substractPoint(e.cursor):(o?u.substractPoint(F.cursor):F&&(d.removeSelectionMarker(F),u.addRange(F)),u.addRange(e)),d.$blockScrolling--,d.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),d.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=d.renderer.pixelToScreenCoordinates(v,A),t=C.screenToDocumentPosition(e.row,e.column);n(y,e)&&n(t,u.lead)||(y=e,d.$blockScrolling++,d.selection.moveToPosition(t),d.renderer.scrollCursorIntoView(),d.removeSelectionMarkers(S),S=u.rectangularRangeBlock(y,E),d.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=d.$mouseHandler.$clickSelection.clone()),S.forEach(d.addSelectionMarker,d),d.updateSelectionMarkers(),d.$blockScrolling--)};d.$blockScrolling++,g&&!l?u.toSingleRange():!g&&l&&(x=u.toOrientedRange(),d.addSelectionMarker(x)),o?E=C.documentToScreenPosition(u.lead):u.moveToPosition(f),d.$blockScrolling--,y={row:-1,column:-1};var D=function(e){clearInterval(k),d.removeSelectionMarkers(S),S.length||(S=[u.toOrientedRange()]),d.$blockScrolling++,x&&(d.removeSelectionMarker(x),u.toSingleRange(x));for(var t=0;t1&&!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 a,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=l.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,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(o,!0);h.start.column=i.start.column,c.push(h);for(var d=o+1;r>d;d++)c.push(this.getLineRange(d,!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=l.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 n=[],r=e.columns&&(s=0),0>h&&(h=0),h==d&&(i=!0);for(var u=h;d>=u;u++){var g=l.fromPoints(this.session.screenToDocumentPosition(u,s),this.session.screenToDocumentPosition(u,a));if(g.isEmpty()){if(f&&o(g.end,f))break;var f=g.end}g.cursor=r?g.start:g.end,n.push(g)}if(c&&n.reverse(),!i){for(var p=n.length-1;n[p].isEmpty()&&p>0;)p--;if(p>0)for(var m=0;n[m].isEmpty();)m++;for(var v=p;v>=m;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=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(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(g.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(g.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,l=a.rangeList,h=(o?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(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--;u.fromOrientedRange(h[g]),u.index=g,this.selection=s.selection=u;var f=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===f||(n=f),u.toOrientedRange(h[g])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,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;ne?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,i){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),!i)){var a=o.getTextRange(s),l=n(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,a=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=a[i]-s;o>c?e.insert(n,u.stringRepeat(" ",o-c)):e.remove(new l(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.removeFullLines(h,d);m=this.$reAlignText(m,g),this.session.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(v.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=r,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){r(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,o=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(e,t,i){return null},this.indentationBlock=function(e,t,i){var o=/\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=i||r.length,l=e.getLength(),c=t,h=t;++t=d)break;h=t}}if(h>c){var u=e.getLine(h).length;return new n(c,a,h,u)}}},this.openingBracketBlock=function(e,t,i,o,r){var s={row:i,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),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,o,r){var s={row:i,column:o},a=e.$findOpeningBracket(t,s);return a?(a.column++,s.column--,n.fromPoints(a,s)):void 0}}).call(o.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"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; } .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 n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(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("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var o=(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&&!t.hidden&&(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(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,o=n.start.row,r=n.end.row,s="add"==e.action,a=o+1;r>a;a++)i[a]&&(i[a].hidden=s);i[r]&&(s?i[o]?i[r].hidden=s:i[o]=i[r]:(i[o]==i[r]&&(i[o]=void 0),i[r].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.start.row,n=e.end.row-i;if(0===n);else if("remove"==e.action){var o=t.splice(i+1,n);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var r=new Array(n);r.unshift(i,0),t.splice.apply(t,r),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){if(e)for(t=!1,e.row=i;e.$oldWidget;)e.$oldWidget.row=i,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var i=this.editor.renderer;e.html&&!e.el&&(e.el=o.createElement("div"),e.el.innerHTML=e.html),e.el&&(o.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,i.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/i.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var r=this.session.lineWidgets;e.row!=n.end.row||r[n.start.row]?e.hidden=!0:r[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,i),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var i=this.session.lineWidgets[e.row];if(i==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;i;){if(i.$oldWidget==e){i.$oldWidget=e.$oldWidget;break}i=i.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,i=t&&t[e],n=[];i;)n.push(i),i=i.$oldWidget;return n},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)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{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.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(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 o(e,t,i){var o=e.getAnnotations().sort(a.comparePoints);if(o.length){var r=n(o,{row:t,column:-1},a.comparePoints);0>r&&(r=-r-1),r>=o.length?r=i>0?0:o.length-1:0===r&&0>i&&(r=o.length-1);var s=o[r];if(s&&i){if(s.row===t){do s=o[r+=i];while(s&&s.row===t);if(!s)return o.slice()}var l=[];t=s.row;do l[0>i?"unshift":"push"](s),s=o[r+=i];while(s&&s.row==t);return l.length&&l}}}var r=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range; +t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new r(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=o(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},g=u.el.appendChild(s.createElement("div")),f=u.el.appendChild(s.createElement("div"));f.className="error_widget_arrow "+c.className;var p=e.renderer.$cursorLayer.getPixelPosition(n).left;f.style.left=p+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",g.className="error_widget "+c.className,g.innerHTML=c.text.join("
"),g.appendChild(s.createElement("div"));var m=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(u.destroy(),{command:"null"})};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(m),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.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,i){"use strict";e("./lib/fixoldbrowsers");var n=e("./lib/dom"),o=e("./lib/event"),r=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=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 i=e;if(e=document.getElementById(i),!e)throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=n.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=n.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new r(new l(e));h.setSession(c);var d={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),o.addListener(window,"resize",d.onResize),h.on("destroy",function(){o.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var i=new s(e,t);return i.setUndoManager(new a),i},t.EditSession=s,t.UndoManager=a,t.version="1.2.2"}),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,i){"use strict";var n=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=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"}]}};n.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var i=e.getLine(t),o=i.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 n(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t]?n=h[t]:void(n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,i,n){var o=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},g=function(){this.add("braces","insertion",function(e,t,i,o,r){var s=i.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){d(i);var c=i.getSelectionRange(),h=o.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(g.isSaneInsertion(i,o))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(g.recordAutoInsert(i,o,"}"),{text:"{}",selection:[1,1]}):(g.recordMaybeInsert(i,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){d(i);var f=l.substring(s.column,s.column+1);if("}"==f){var p=o.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==p&&g.isAutoInsertedClosing(s,l,r))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){d(i);var m="";g.isMaybeInsertedClosing(s,l)&&(m=a.stringRepeat("}",n.maybeInsertedBrackets),g.clearMaybeInsertedClosing());var f=l.substring(s.column,s.column+1);if("}"===f){var v=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var A=this.$getIndent(o.getLine(v.row))}else{if(!m)return void g.clearMaybeInsertedClosing();var A=this.$getIndent(l)}var w=A+o.getTabString();return{text:"\n"+w+"\n"+A+m,selection:[1,w.length,1,w.length]}}g.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){d(i);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;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,o){if("("==o){d(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return u(r,s,"(",")");if(g.isSaneInsertion(i,n))return g.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==o){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&g.isAutoInsertedClosing(a,l,o))return g.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){d(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){d(i);var r=i.getSelectionRange(),s=n.doc.getTextRange(r);if(""!==s&&i.getWrapBehavioursEnabled())return u(r,s,"[","]");if(g.isSaneInsertion(i,n))return g.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&g.isAutoInsertedClosing(a,l,o))return g.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){d(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){d(i);var r=o,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,r,r);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),g=c.substring(l.column,l.column+1),f=n.getTokenAt(l.row,l.column),p=n.getTokenAt(l.row,l.column+1);if("\\"==h&&f&&/escape/.test(f.type))return null;var m,v=f&&/string|escape/.test(f.type),A=!p||/string|escape/.test(p.type);if(g==r)m=v!==A;else{if(v&&!A)return null;if(v&&A)return null;var w=n.$mode.tokenRe;w.lastIndex=0;var C=w.test(h);w.lastIndex=0;var E=w.test(h);if(C||E)return null;if(g&&!/[\s;,.})\]\\]/.test(g))return null;m=!0}return{text:m?r+r:"",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)){d(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}})};g.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var o=new s(t,i.row,i.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},g.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},g.recordAutoInsert=function(e,t,i){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=o.row,n.autoInsertedLineEnd=i+r.substr(o.column),n.autoInsertedBrackets++},g.recordMaybeInsert=function(e,t,i){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=o.row,n.maybeInsertedLineStart=r.substr(0,o.column)+i,n.maybeInsertedLineEnd=r.substr(o.column),n.maybeInsertedBrackets++},g.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},g.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},g.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},g.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},o.inherits(g,r),t.CstyleBehaviour=g}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=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)))};n.inherits(s,r),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var o=this._getFoldWidgetBase(e,t,i);return!o&&this.startRegionRe.test(n)?"start":o},this.getFoldWidgetRange=function(e,t,i,n){var o=e.getLine(i);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,i);var 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),n=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(n==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),r=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is?new o(s,n,h,t.length):void 0}}.call(s.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,n){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(d,r),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 h(["ace"],i(17),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(d.prototype),t.Mode=d})},function(e,t,i){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,i){"use strict";var n=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=" .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; 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; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");n.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),h=function(e,t,i){var o=n.createElement("div");o.innerHTML=c,this.element=o.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;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.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),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,i,n){var o=l.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.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(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.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,i){var o=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),r=!o&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),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;n.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.find(!1,!1,!0),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(h.prototype),t.SearchBox=h,t.Search=function(e,t){var i=e.searchBox||new h(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,i){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,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 acequire(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;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[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={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){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.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(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/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/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["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/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(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row: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/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},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){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){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;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;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 deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(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(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="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(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.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\n}()){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;for(;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,t,i){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,i){(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