Full Code of MikeC-Cn/MiEdit for AI

master 108d46181c9a cached
205 files
12.6 MB
3.3M tokens
2516 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (13,209K chars total). Download the full file to get everything.
Repository: MikeC-Cn/MiEdit
Branch: master
Commit: 108d46181c9a
Files: 205
Total size: 12.6 MB

Directory structure:
gitextract_c0cy390y/

├── LICENSE
├── README.md
├── ace/
│   ├── ace.js
│   ├── mode-abap.js
│   ├── mode-abc.js
│   ├── mode-actionscript.js
│   ├── mode-ada.js
│   ├── mode-apache_conf.js
│   ├── mode-apex.js
│   ├── mode-applescript.js
│   ├── mode-aql.js
│   ├── mode-asciidoc.js
│   ├── mode-asl.js
│   ├── mode-assembly_x86.js
│   ├── mode-autohotkey.js
│   ├── mode-batchfile.js
│   ├── mode-bro.js
│   ├── mode-c9search.js
│   ├── mode-c_cpp.js
│   ├── mode-cirru.js
│   ├── mode-clojure.js
│   ├── mode-cobol.js
│   ├── mode-coffee.js
│   ├── mode-coldfusion.js
│   ├── mode-crystal.js
│   ├── mode-csharp.js
│   ├── mode-csound_document.js
│   ├── mode-csound_orchestra.js
│   ├── mode-csound_score.js
│   ├── mode-csp.js
│   ├── mode-css.js
│   ├── mode-curly.js
│   ├── mode-d.js
│   ├── mode-dart.js
│   ├── mode-diff.js
│   ├── mode-django.js
│   ├── mode-dockerfile.js
│   ├── mode-dot.js
│   ├── mode-drools.js
│   ├── mode-edifact.js
│   ├── mode-eiffel.js
│   ├── mode-ejs.js
│   ├── mode-elixir.js
│   ├── mode-elm.js
│   ├── mode-erlang.js
│   ├── mode-forth.js
│   ├── mode-fortran.js
│   ├── mode-fsharp.js
│   ├── mode-fsl.js
│   ├── mode-ftl.js
│   ├── mode-gcode.js
│   ├── mode-gherkin.js
│   ├── mode-gitignore.js
│   ├── mode-glsl.js
│   ├── mode-gobstones.js
│   ├── mode-golang.js
│   ├── mode-graphqlschema.js
│   ├── mode-groovy.js
│   ├── mode-haml.js
│   ├── mode-handlebars.js
│   ├── mode-haskell.js
│   ├── mode-haskell_cabal.js
│   ├── mode-haxe.js
│   ├── mode-hjson.js
│   ├── mode-html.js
│   ├── mode-html_elixir.js
│   ├── mode-html_ruby.js
│   ├── mode-ini.js
│   ├── mode-io.js
│   ├── mode-jack.js
│   ├── mode-jade.js
│   ├── mode-java.js
│   ├── mode-javascript.js
│   ├── mode-json.js
│   ├── mode-json5.js
│   ├── mode-jsoniq.js
│   ├── mode-jsp.js
│   ├── mode-jssm.js
│   ├── mode-jsx.js
│   ├── mode-julia.js
│   ├── mode-kotlin.js
│   ├── mode-latex.js
│   ├── mode-less.js
│   ├── mode-liquid.js
│   ├── mode-lisp.js
│   ├── mode-livescript.js
│   ├── mode-logiql.js
│   ├── mode-logtalk.js
│   ├── mode-lsl.js
│   ├── mode-lua.js
│   ├── mode-luapage.js
│   ├── mode-lucene.js
│   ├── mode-makefile.js
│   ├── mode-markdown.js
│   ├── mode-mask.js
│   ├── mode-matlab.js
│   ├── mode-maze.js
│   ├── mode-mel.js
│   ├── mode-mixal.js
│   ├── mode-mushcode.js
│   ├── mode-mysql.js
│   ├── mode-nginx.js
│   ├── mode-nim.js
│   ├── mode-nix.js
│   ├── mode-nsis.js
│   ├── mode-nunjucks.js
│   ├── mode-objectivec.js
│   ├── mode-ocaml.js
│   ├── mode-pascal.js
│   ├── mode-perl.js
│   ├── mode-perl6.js
│   ├── mode-pgsql.js
│   ├── mode-php.js
│   ├── mode-php_laravel_blade.js
│   ├── mode-pig.js
│   ├── mode-plain_text.js
│   ├── mode-powershell.js
│   ├── mode-praat.js
│   ├── mode-prolog.js
│   ├── mode-properties.js
│   ├── mode-protobuf.js
│   ├── mode-puppet.js
│   ├── mode-python.js
│   ├── mode-r.js
│   ├── mode-razor.js
│   ├── mode-rdoc.js
│   ├── mode-red.js
│   ├── mode-redshift.js
│   ├── mode-rhtml.js
│   ├── mode-rst.js
│   ├── mode-ruby.js
│   ├── mode-rust.js
│   ├── mode-sass.js
│   ├── mode-scad.js
│   ├── mode-scala.js
│   ├── mode-scheme.js
│   ├── mode-scss.js
│   ├── mode-sh.js
│   ├── mode-sjs.js
│   ├── mode-slim.js
│   ├── mode-smarty.js
│   ├── mode-snippets.js
│   ├── mode-soy_template.js
│   ├── mode-space.js
│   ├── mode-sparql.js
│   ├── mode-sql.js
│   ├── mode-sqlserver.js
│   ├── mode-stylus.js
│   ├── mode-svg.js
│   ├── mode-swift.js
│   ├── mode-tcl.js
│   ├── mode-terraform.js
│   ├── mode-tex.js
│   ├── mode-text.js
│   ├── mode-textile.js
│   ├── mode-toml.js
│   ├── mode-tsx.js
│   ├── mode-turtle.js
│   ├── mode-twig.js
│   ├── mode-typescript.js
│   ├── mode-vala.js
│   ├── mode-vbscript.js
│   ├── mode-velocity.js
│   ├── mode-verilog.js
│   ├── mode-vhdl.js
│   ├── mode-visualforce.js
│   ├── mode-wollok.js
│   ├── mode-xml.js
│   ├── mode-xquery.js
│   ├── mode-yaml.js
│   ├── mode-zeek.js
│   ├── theme-ambiance.js
│   ├── theme-chaos.js
│   ├── theme-chrome.js
│   ├── theme-clouds.js
│   ├── theme-cobalt.js
│   ├── theme-dawn.js
│   ├── theme-dracula.js
│   ├── theme-dreamweaver.js
│   ├── theme-eclipse.js
│   ├── theme-github.js
│   ├── theme-gob.js
│   ├── theme-gruvbox.js
│   ├── theme-iplastic.js
│   ├── theme-katzenmilch.js
│   ├── theme-kuroir.js
│   ├── theme-merbivore.js
│   ├── theme-monokai.js
│   ├── theme-sqlserver.js
│   ├── theme-terminal.js
│   ├── theme-textmate.js
│   ├── theme-tomorrow.js
│   ├── theme-twilight.js
│   ├── worker-coffee.js
│   ├── worker-css.js
│   ├── worker-html.js
│   ├── worker-javascript.js
│   ├── worker-json.js
│   ├── worker-lua.js
│   ├── worker-php.js
│   ├── worker-xml.js
│   └── worker-xquery.js
├── index.html
├── main.js
└── package.json

================================================
FILE CONTENTS
================================================

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2020 MikeC-Cn

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# MiEdit

## 介绍

MiEdit是一款基于[Electron](https://www.electronjs.org/)开发的代码编辑器,简单易用。目前可用版本为```v1.0.1```

![](https://img.shields.io/badge/author-MikeC-green) ![](https://img.shields.io/badge/release-v1.0.1-blue) ![](https://img.shields.io/badge/license-MIT-blue) ![](https://img.shields.io/github/stars/MikeC-Cn/MiEdit.svg?style=social&label=Star&maxAge=2592000) ![](https://img.shields.io/github/watchers/MikeC-Cn/MiEdit.svg?style=social&label=Watch&maxAge=2592000) ![](https://img.shields.io/github/forks/MikeC-Cn/MiEdit.svg?style=social&label=Fork&maxAge=2592000)

## 功能

- 文件拖放
- 语法提示
- 20+主题配色
- 160+语言高亮

## 版权信息

``````
Copyright (c) 2020 MikeC-Cn

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
``````

================================================
FILE: ace/ace.js
================================================
/* ***** BEGIN LICENSE BLOCK *****
 * Distributed under the BSD license:
 *
 * Copyright (c) 2010, Ajax.org B.V.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of Ajax.org B.V. nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ***** END LICENSE BLOCK ***** */

/**
 * Define a module along with a payload
 * @param module a name for the payload
 * @param payload a function to call with (require, exports, module) params
 */

(function() {

var ACE_NAMESPACE = "ace";

var global = (function() { return this; })();
if (!global && typeof window != "undefined") global = window; // strict mode


if (!ACE_NAMESPACE && typeof requirejs !== "undefined")
    return;


var define = function(module, deps, payload) {
    if (typeof module !== "string") {
        if (define.original)
            define.original.apply(this, arguments);
        else {
            console.error("dropping module because define wasn\'t a string.");
            console.trace();
        }
        return;
    }
    if (arguments.length == 2)
        payload = deps;
    if (!define.modules[module]) {
        define.payloads[module] = payload;
        define.modules[module] = null;
    }
};

define.modules = {};
define.payloads = {};

/**
 * Get at functionality define()ed using the function above
 */
var _require = function(parentId, module, callback) {
    if (typeof module === "string") {
        var payload = lookup(parentId, module);
        if (payload != undefined) {
            callback && callback();
            return payload;
        }
    } else if (Object.prototype.toString.call(module) === "[object Array]") {
        var params = [];
        for (var i = 0, l = module.length; i < l; ++i) {
            var dep = lookup(parentId, module[i]);
            if (dep == undefined && require.original)
                return;
            params.push(dep);
        }
        return callback && callback.apply(null, params) || true;
    }
};

var require = function(module, callback) {
    var packagedModule = _require("", module, callback);
    if (packagedModule == undefined && require.original)
        return require.original.apply(this, arguments);
    return packagedModule;
};

var normalizeModule = function(parentId, moduleName) {
    // normalize plugin requires
    if (moduleName.indexOf("!") !== -1) {
        var chunks = moduleName.split("!");
        return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
    }
    // normalize relative requires
    if (moduleName.charAt(0) == ".") {
        var base = parentId.split("/").slice(0, -1).join("/");
        moduleName = base + "/" + moduleName;

        while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
            var previous = moduleName;
            moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
        }
    }
    return moduleName;
};

/**
 * Internal function to lookup moduleNames and resolve them by calling the
 * definition function if needed.
 */
var lookup = function(parentId, moduleName) {
    moduleName = normalizeModule(parentId, moduleName);

    var module = define.modules[moduleName];
    if (!module) {
        module = define.payloads[moduleName];
        if (typeof module === 'function') {
            var exports = {};
            var mod = {
                id: moduleName,
                uri: '',
                exports: exports,
                packaged: true
            };

            var req = function(module, callback) {
                return _require(moduleName, module, callback);
            };

            var returnValue = module(req, exports, mod);
            exports = returnValue || mod.exports;
            define.modules[moduleName] = exports;
            delete define.payloads[moduleName];
        }
        module = define.modules[moduleName] = exports || module;
    }
    return module;
};

function exportAce(ns) {
    var root = global;
    if (ns) {
        if (!global[ns])
            global[ns] = {};
        root = global[ns];
    }

    if (!root.define || !root.define.packaged) {
        define.original = root.define;
        root.define = define;
        root.define.packaged = true;
    }

    if (!root.require || !root.require.packaged) {
        require.original = root.require;
        root.require = require;
        root.require.packaged = true;
    }
}

exportAce(ACE_NAMESPACE);

})();

ace.define("ace/lib/regexp",["require","exports","module"], function(require, exports, module) {
"use strict";

    var real = {
            exec: RegExp.prototype.exec,
            test: RegExp.prototype.test,
            match: String.prototype.match,
            replace: String.prototype.replace,
            split: String.prototype.split
        },
        compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
        compliantLastIndexIncrement = function () {
            var x = /^/g;
            real.test.call(x, "");
            return !x.lastIndex;
        }();

    if (compliantLastIndexIncrement && compliantExecNpcg)
        return;
    RegExp.prototype.exec = function (str) {
        var match = real.exec.apply(this, arguments),
            name, r2;
        if ( typeof(str) == 'string' && match) {
            if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
                r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
                real.replace.call(str.slice(match.index), r2, function () {
                    for (var i = 1; i < arguments.length - 2; i++) {
                        if (arguments[i] === undefined)
                            match[i] = undefined;
                    }
                });
            }
            if (this._xregexp && this._xregexp.captureNames) {
                for (var i = 1; i < match.length; i++) {
                    name = this._xregexp.captureNames[i - 1];
                    if (name)
                       match[name] = match[i];
                }
            }
            if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
                this.lastIndex--;
        }
        return match;
    };
    if (!compliantLastIndexIncrement) {
        RegExp.prototype.test = function (str) {
            var match = real.exec.call(this, str);
            if (match && this.global && !match[0].length && (this.lastIndex > match.index))
                this.lastIndex--;
            return !!match;
        };
    }

    function getNativeFlags (regex) {
        return (regex.global     ? "g" : "") +
               (regex.ignoreCase ? "i" : "") +
               (regex.multiline  ? "m" : "") +
               (regex.extended   ? "x" : "") + // Proposed for ES4; included in AS3
               (regex.sticky     ? "y" : "");
    }

    function indexOf (array, item, from) {
        if (Array.prototype.indexOf) // Use the native array method if available
            return array.indexOf(item, from);
        for (var i = from || 0; i < array.length; i++) {
            if (array[i] === item)
                return i;
        }
        return -1;
    }

});

ace.define("ace/lib/es5-shim",["require","exports","module"], function(require, exports, module) {

function Empty() {}

if (!Function.prototype.bind) {
    Function.prototype.bind = function bind(that) { // .length is 1
        var target = this;
        if (typeof target != "function") {
            throw new TypeError("Function.prototype.bind called on incompatible " + target);
        }
        var args = slice.call(arguments, 1); // for normal call
        var bound = function () {

            if (this instanceof bound) {

                var result = target.apply(
                    this,
                    args.concat(slice.call(arguments))
                );
                if (Object(result) === result) {
                    return result;
                }
                return this;

            } else {
                return target.apply(
                    that,
                    args.concat(slice.call(arguments))
                );

            }

        };
        if(target.prototype) {
            Empty.prototype = target.prototype;
            bound.prototype = new Empty();
            Empty.prototype = null;
        }
        return bound;
    };
}
var call = Function.prototype.call;
var prototypeOfArray = Array.prototype;
var prototypeOfObject = Object.prototype;
var slice = prototypeOfArray.slice;
var _toString = call.bind(prototypeOfObject.toString);
var owns = call.bind(prototypeOfObject.hasOwnProperty);
var defineGetter;
var defineSetter;
var lookupGetter;
var lookupSetter;
var supportsAccessors;
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__);
}
if ([1,2].splice(0).length != 2) {
    if(function() { // test IE < 9 to splice bug - see issue #138
        function makeArray(l) {
            var a = new Array(l+2);
            a[0] = a[1] = 0;
            return a;
        }
        var array = [], lengthBefore;
        
        array.splice.apply(array, makeArray(20));
        array.splice.apply(array, makeArray(26));

        lengthBefore = array.length; //46
        array.splice(5, 0, "XXX"); // add one element

        lengthBefore + 1 == array.length

        if (lengthBefore + 1 == array.length) {
            return true;// has right splice implementation without bugs
        }
    }()) {//IE 6/7
        var array_splice = Array.prototype.splice;
        Array.prototype.splice = function(start, deleteCount) {
            if (!arguments.length) {
                return [];
            } else {
                return array_splice.apply(this, [
                    start === void 0 ? 0 : start,
                    deleteCount === void 0 ? (this.length - start) : deleteCount
                ].concat(slice.call(arguments, 2)))
            }
        };
    } else {//IE8
        Array.prototype.splice = function(pos, removeCount){
            var length = this.length;
            if (pos > 0) {
                if (pos > length)
                    pos = length;
            } else if (pos == void 0) {
                pos = 0;
            } else if (pos < 0) {
                pos = Math.max(length + pos, 0);
            }

            if (!(pos+removeCount < length))
                removeCount = length - pos;

            var removed = this.slice(pos, pos+removeCount);
            var insert = slice.call(arguments, 2);
            var add = insert.length;            
            if (pos === length) {
                if (add) {
                    this.push.apply(this, insert);
                }
            } else {
                var remove = Math.min(removeCount, length - pos);
                var tailOldPos = pos + remove;
                var tailNewPos = tailOldPos + add - remove;
                var tailCount = length - tailOldPos;
                var lengthAfterRemove = length - remove;

                if (tailNewPos < tailOldPos) { // case A
                    for (var i = 0; i < tailCount; ++i) {
                        this[tailNewPos+i] = this[tailOldPos+i];
                    }
                } else if (tailNewPos > tailOldPos) { // case B
                    for (i = tailCount; i--; ) {
                        this[tailNewPos+i] = this[tailOldPos+i];
                    }
                } // else, add == remove (nothing to do)

                if (add && pos === lengthAfterRemove) {
                    this.length = lengthAfterRemove; // truncate array
                    this.push.apply(this, insert);
                } else {
                    this.length = lengthAfterRemove + add; // reserves space
                    for (i = 0; i < add; ++i) {
                        this[pos+i] = insert[i];
                    }
                }
            }
            return removed;
        };
    }
}
if (!Array.isArray) {
    Array.isArray = function isArray(obj) {
        return _toString(obj) == "[object Array]";
    };
}
var boxedString = Object("a"),
    splitString = boxedString[0] != "a" || !(0 in boxedString);

if (!Array.prototype.forEach) {
    Array.prototype.forEach = function forEach(fun /*, thisp*/) {
        var object = toObject(this),
            self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                object,
            thisp = arguments[1],
            i = -1,
            length = self.length >>> 0;
        if (_toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        while (++i < length) {
            if (i in self) {
                fun.call(thisp, self[i], i, object);
            }
        }
    };
}
if (!Array.prototype.map) {
    Array.prototype.map = function map(fun /*, thisp*/) {
        var object = toObject(this),
            self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                object,
            length = self.length >>> 0,
            result = Array(length),
            thisp = arguments[1];
        if (_toString(fun) != "[object Function]") {
            throw new TypeError(fun + " is not a function");
        }

        for (var i = 0; i < length; i++) {
            if (i in self)
                result[i] = fun.call(thisp, self[i], i, object);
        }
        return result;
    };
}
if (!Array.prototype.filter) {
    Array.prototype.filter = function filter(fun /*, thisp */) {
        var object = toObject(this),
            self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                    object,
            length = self.length >>> 0,
            result = [],
            value,
            thisp = arguments[1];
        if (_toString(fun) != "[object Function]") {
            throw new TypeError(fun + " is not a function");
        }

        for (var i = 0; i < length; i++) {
            if (i in self) {
                value = self[i];
                if (fun.call(thisp, value, i, object)) {
                    result.push(value);
                }
            }
        }
        return result;
    };
}
if (!Array.prototype.every) {
    Array.prototype.every = function every(fun /*, thisp */) {
        var object = toObject(this),
            self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                object,
            length = self.length >>> 0,
            thisp = arguments[1];
        if (_toString(fun) != "[object Function]") {
            throw new TypeError(fun + " is not a function");
        }

        for (var i = 0; i < length; i++) {
            if (i in self && !fun.call(thisp, self[i], i, object)) {
                return false;
            }
        }
        return true;
    };
}
if (!Array.prototype.some) {
    Array.prototype.some = function some(fun /*, thisp */) {
        var object = toObject(this),
            self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                object,
            length = self.length >>> 0,
            thisp = arguments[1];
        if (_toString(fun) != "[object Function]") {
            throw new TypeError(fun + " is not a function");
        }

        for (var i = 0; i < length; i++) {
            if (i in self && fun.call(thisp, self[i], i, object)) {
                return true;
            }
        }
        return false;
    };
}
if (!Array.prototype.reduce) {
    Array.prototype.reduce = function reduce(fun /*, initial*/) {
        var object = toObject(this),
            self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                object,
            length = self.length >>> 0;
        if (_toString(fun) != "[object Function]") {
            throw new TypeError(fun + " is not a function");
        }
        if (!length && arguments.length == 1) {
            throw new TypeError("reduce of empty array with no initial value");
        }

        var i = 0;
        var result;
        if (arguments.length >= 2) {
            result = arguments[1];
        } else {
            do {
                if (i in self) {
                    result = self[i++];
                    break;
                }
                if (++i >= length) {
                    throw new TypeError("reduce of empty array with no initial value");
                }
            } while (true);
        }

        for (; i < length; i++) {
            if (i in self) {
                result = fun.call(void 0, result, self[i], i, object);
            }
        }

        return result;
    };
}
if (!Array.prototype.reduceRight) {
    Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
        var object = toObject(this),
            self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                object,
            length = self.length >>> 0;
        if (_toString(fun) != "[object Function]") {
            throw new TypeError(fun + " is not a function");
        }
        if (!length && arguments.length == 1) {
            throw new TypeError("reduceRight of empty array with no initial value");
        }

        var result, i = length - 1;
        if (arguments.length >= 2) {
            result = arguments[1];
        } else {
            do {
                if (i in self) {
                    result = self[i--];
                    break;
                }
                if (--i < 0) {
                    throw new TypeError("reduceRight of empty array with no initial value");
                }
            } while (true);
        }

        do {
            if (i in this) {
                result = fun.call(void 0, result, self[i], i, object);
            }
        } while (i--);

        return result;
    };
}
if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {
    Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
        var self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                toObject(this),
            length = self.length >>> 0;

        if (!length) {
            return -1;
        }

        var i = 0;
        if (arguments.length > 1) {
            i = toInteger(arguments[1]);
        }
        i = i >= 0 ? i : Math.max(0, length + i);
        for (; i < length; i++) {
            if (i in self && self[i] === sought) {
                return i;
            }
        }
        return -1;
    };
}
if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {
    Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
        var self = splitString && _toString(this) == "[object String]" ?
                this.split("") :
                toObject(this),
            length = self.length >>> 0;

        if (!length) {
            return -1;
        }
        var i = length - 1;
        if (arguments.length > 1) {
            i = Math.min(i, toInteger(arguments[1]));
        }
        i = i >= 0 ? i : length - Math.abs(i);
        for (; i >= 0; i--) {
            if (i in self && sought === self[i]) {
                return i;
            }
        }
        return -1;
    };
}
if (!Object.getPrototypeOf) {
    Object.getPrototypeOf = function getPrototypeOf(object) {
        return object.__proto__ || (
            object.constructor ?
            object.constructor.prototype :
            prototypeOfObject
        );
    };
}
if (!Object.getOwnPropertyDescriptor) {
    var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
                         "non-object: ";
    Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
        if ((typeof object != "object" && typeof object != "function") || object === null)
            throw new TypeError(ERR_NON_OBJECT + object);
        if (!owns(object, property))
            return;

        var descriptor, getter, setter;
        descriptor =  { enumerable: true, configurable: true };
        if (supportsAccessors) {
            var prototype = object.__proto__;
            object.__proto__ = prototypeOfObject;

            var getter = lookupGetter(object, property);
            var setter = lookupSetter(object, property);
            object.__proto__ = prototype;

            if (getter || setter) {
                if (getter) descriptor.get = getter;
                if (setter) descriptor.set = setter;
                return descriptor;
            }
        }
        descriptor.value = object[property];
        return descriptor;
    };
}
if (!Object.getOwnPropertyNames) {
    Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
        return Object.keys(object);
    };
}
if (!Object.create) {
    var createEmpty;
    if (Object.prototype.__proto__ === null) {
        createEmpty = function () {
            return { "__proto__": null };
        };
    } else {
        createEmpty = function () {
            var empty = {};
            for (var i in empty)
                empty[i] = null;
            empty.constructor =
            empty.hasOwnProperty =
            empty.propertyIsEnumerable =
            empty.isPrototypeOf =
            empty.toLocaleString =
            empty.toString =
            empty.valueOf =
            empty.__proto__ = null;
            return empty;
        }
    }

    Object.create = function create(prototype, properties) {
        var object;
        if (prototype === null) {
            object = createEmpty();
        } else {
            if (typeof prototype != "object")
                throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
            var Type = function () {};
            Type.prototype = prototype;
            object = new Type();
            object.__proto__ = prototype;
        }
        if (properties !== void 0)
            Object.defineProperties(object, properties);
        return object;
    };
}

function doesDefinePropertyWork(object) {
    try {
        Object.defineProperty(object, "sentinel", {});
        return "sentinel" in object;
    } catch (exception) {
    }
}
if (Object.defineProperty) {
    var definePropertyWorksOnObject = doesDefinePropertyWork({});
    var definePropertyWorksOnDom = typeof document == "undefined" ||
        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: ";
    var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
    var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
                                      "on this javascript engine";

    Object.defineProperty = function defineProperty(object, property, descriptor) {
        if ((typeof object != "object" && typeof object != "function") || object === null)
            throw new TypeError(ERR_NON_OBJECT_TARGET + object);
        if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
            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);
            if (owns(descriptor, "get"))
                defineGetter(object, property, descriptor.get);
            if (owns(descriptor, "set"))
                defineSetter(object, property, descriptor.set);
        }

        return object;
    };
}
if (!Object.defineProperties) {
    Object.defineProperties = function defineProperties(object, properties) {
        for (var property in properties) {
            if (owns(properties, property))
                Object.defineProperty(object, property, properties[property]);
        }
        return object;
    };
}
if (!Object.seal) {
    Object.seal = function seal(object) {
        return object;
    };
}
if (!Object.freeze) {
    Object.freeze = function freeze(object) {
        return object;
    };
}
try {
    Object.freeze(function () {});
} catch (exception) {
    Object.freeze = (function freeze(freezeObject) {
        return function freeze(object) {
            if (typeof object == "function") {
                return object;
            } else {
                return freezeObject(object);
            }
        };
    })(Object.freeze);
}
if (!Object.preventExtensions) {
    Object.preventExtensions = function preventExtensions(object) {
        return object;
    };
}
if (!Object.isSealed) {
    Object.isSealed = function isSealed(object) {
        return false;
    };
}
if (!Object.isFrozen) {
    Object.isFrozen = function isFrozen(object) {
        return false;
    };
}
if (!Object.isExtensible) {
    Object.isExtensible = function isExtensible(object) {
        if (Object(object) === object) {
            throw new TypeError(); // TODO message
        }
        var name = '';
        while (owns(object, name)) {
            name += '?';
        }
        object[name] = true;
        var returnValue = owns(object, name);
        delete object[name];
        return returnValue;
    };
}
if (!Object.keys) {
    var hasDontEnumBug = true,
        dontEnums = [
            "toString",
            "toLocaleString",
            "valueOf",
            "hasOwnProperty",
            "isPrototypeOf",
            "propertyIsEnumerable",
            "constructor"
        ],
        dontEnumsLength = dontEnums.length;

    for (var key in {"toString": null}) {
        hasDontEnumBug = false;
    }

    Object.keys = function keys(object) {

        if (
            (typeof object != "object" && typeof object != "function") ||
            object === null
        ) {
            throw new TypeError("Object.keys called on a non-object");
        }

        var keys = [];
        for (var name in object) {
            if (owns(object, name)) {
                keys.push(name);
            }
        }

        if (hasDontEnumBug) {
            for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
                var dontEnum = dontEnums[i];
                if (owns(object, dontEnum)) {
                    keys.push(dontEnum);
                }
            }
        }
        return keys;
    };

}
if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}
var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003" +
    "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
    "\u2029\uFEFF";
if (!String.prototype.trim) {
    ws = "[" + ws + "]";
    var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
        trimEndRegexp = new RegExp(ws + ws + "*$");
    String.prototype.trim = function trim() {
        return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
    };
}

function toInteger(n) {
    n = +n;
    if (n !== n) { // isNaN
        n = 0;
    } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {
        n = (n > 0 || -1) * Math.floor(Math.abs(n));
    }
    return n;
}

function isPrimitive(input) {
    var type = typeof input;
    return (
        input === null ||
        type === "undefined" ||
        type === "boolean" ||
        type === "number" ||
        type === "string"
    );
}

function toPrimitive(input) {
    var val, valueOf, toString;
    if (isPrimitive(input)) {
        return input;
    }
    valueOf = input.valueOf;
    if (typeof valueOf === "function") {
        val = valueOf.call(input);
        if (isPrimitive(val)) {
            return val;
        }
    }
    toString = input.toString;
    if (typeof toString === "function") {
        val = toString.call(input);
        if (isPrimitive(val)) {
            return val;
        }
    }
    throw new TypeError();
}
var toObject = function (o) {
    if (o == null) { // this matches both null and undefined
        throw new TypeError("can't convert "+o+" to object");
    }
    return Object(o);
};

});

ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"], function(require, exports, module) {
"use strict";

require("./regexp");
require("./es5-shim");
if (typeof Element != "undefined" && !Element.prototype.remove) {
    Object.defineProperty(Element.prototype, "remove", {
        enumerable: false,
        writable: true,
        configurable: true,
        value: function() { this.parentNode && this.parentNode.removeChild(this); }
    });
}


});

ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module) {
"use strict";
exports.OS = {
    LINUX: "LINUX",
    MAC: "MAC",
    WINDOWS: "WINDOWS"
};
exports.getOS = function() {
    if (exports.isMac) {
        return exports.OS.MAC;
    } else if (exports.isLinux) {
        return exports.OS.LINUX;
    } else {
        return exports.OS.WINDOWS;
    }
};
var _navigator = typeof navigator == "object" ? navigator : {};

var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase();
var ua = _navigator.userAgent || "";
var appName = _navigator.appName || "";
exports.isWin = (os == "win");
exports.isMac = (os == "mac");
exports.isLinux = (os == "linux");
exports.isIE = 
    (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0)
    ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1])
    : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]); // for ie
    
exports.isOldIE = exports.isIE && exports.isIE < 9;
exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/);
exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window.opera) == "[object Opera]";
exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;

exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined;

exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined;

exports.isAIR = ua.indexOf("AdobeAIR") >= 0;

exports.isAndroid = ua.indexOf("Android") >= 0;

exports.isChromeOS = ua.indexOf(" CrOS ") >= 0;

exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;

if (exports.isIOS) exports.isMac = true;

exports.isMobile = exports.isIOS || exports.isAndroid;

});

ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module) {
"use strict";

var useragent = require("./useragent"); 
var XHTML_NS = "http://www.w3.org/1999/xhtml";

exports.buildDom = function buildDom(arr, parent, refs) {
    if (typeof arr == "string" && arr) {
        var txt = document.createTextNode(arr);
        if (parent)
            parent.appendChild(txt);
        return txt;
    }
    
    if (!Array.isArray(arr))
        return arr;
    if (typeof arr[0] != "string" || !arr[0]) {
        var els = [];
        for (var i = 0; i < arr.length; i++) {
            var ch = buildDom(arr[i], parent, refs);
            ch && els.push(ch);
        }
        return els;
    }
    
    var el = document.createElement(arr[0]);
    var options = arr[1];
    var childIndex = 1;
    if (options && typeof options == "object" && !Array.isArray(options))
        childIndex = 2;
    for (var i = childIndex; i < arr.length; i++)
        buildDom(arr[i], el, refs);
    if (childIndex == 2) {
        Object.keys(options).forEach(function(n) {
            var val = options[n];
            if (n === "class") {
                el.className = Array.isArray(val) ? val.join(" ") : val;
            } else if (typeof val == "function" || n == "value") {
                el[n] = val;
            } else if (n === "ref") {
                if (refs) refs[val] = el;
            } else if (val != null) {
                el.setAttribute(n, val);
            }
        });
    }
    if (parent)
        parent.appendChild(el);
    return el;
};

exports.getDocumentHead = function(doc) {
    if (!doc)
        doc = document;
    return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;
};

exports.createElement = function(tag, ns) {
    return document.createElementNS ?
           document.createElementNS(ns || XHTML_NS, tag) :
           document.createElement(tag);
};

exports.removeChildren = function(element) {
    element.innerHTML = "";
};

exports.createTextNode = function(textContent, element) {
    var doc = element ? element.ownerDocument : document;
    return doc.createTextNode(textContent);
};

exports.createFragment = function(element) {
    var doc = element ? element.ownerDocument : document;
    return doc.createDocumentFragment();
};

exports.hasCssClass = function(el, name) {
    var classes = (el.className + "").split(/\s+/g);
    return classes.indexOf(name) !== -1;
};
exports.addCssClass = function(el, name) {
    if (!exports.hasCssClass(el, name)) {
        el.className += " " + name;
    }
};
exports.removeCssClass = function(el, name) {
    var classes = el.className.split(/\s+/g);
    while (true) {
        var index = classes.indexOf(name);
        if (index == -1) {
            break;
        }
        classes.splice(index, 1);
    }
    el.className = classes.join(" ");
};

exports.toggleCssClass = function(el, name) {
    var classes = el.className.split(/\s+/g), add = true;
    while (true) {
        var index = classes.indexOf(name);
        if (index == -1) {
            break;
        }
        add = false;
        classes.splice(index, 1);
    }
    if (add)
        classes.push(name);

    el.className = classes.join(" ");
    return add;
};
exports.setCssClass = function(node, className, include) {
    if (include) {
        exports.addCssClass(node, className);
    } else {
        exports.removeCssClass(node, className);
    }
};

exports.hasCssString = function(id, doc) {
    var index = 0, sheets;
    doc = doc || document;
    if ((sheets = doc.querySelectorAll("style"))) {
        while (index < sheets.length)
            if (sheets[index++].id === id)
                return true;
    }
};

exports.importCssString = function importCssString(cssText, id, target) {
    var container = target;
    if (!target || !target.getRootNode) {
        container = document;
    } else {
        container = target.getRootNode();
        if (!container || container == target)
            container = document;
    }
    
    var doc = container.ownerDocument || container;
    if (id && exports.hasCssString(id, container))
        return null;
    
    if (id)
        cssText += "\n/*# sourceURL=ace/css/" + id + " */";
    
    var style = exports.createElement("style");
    style.appendChild(doc.createTextNode(cssText));
    if (id)
        style.id = id;

    if (container == doc)
        container = exports.getDocumentHead(doc);
    container.insertBefore(style, container.firstChild);
};

exports.importCssStylsheet = function(uri, doc) {
    exports.buildDom(["link", {rel: "stylesheet", href: uri}], exports.getDocumentHead(doc));
};
exports.scrollbarWidth = function(document) {
    var inner = exports.createElement("ace_inner");
    inner.style.width = "100%";
    inner.style.minWidth = "0px";
    inner.style.height = "200px";
    inner.style.display = "block";

    var outer = exports.createElement("ace_outer");
    var style = outer.style;

    style.position = "absolute";
    style.left = "-10000px";
    style.overflow = "hidden";
    style.width = "200px";
    style.minWidth = "0px";
    style.height = "150px";
    style.display = "block";

    outer.appendChild(inner);

    var body = document.documentElement;
    body.appendChild(outer);

    var noScrollbar = inner.offsetWidth;

    style.overflow = "scroll";
    var withScrollbar = inner.offsetWidth;

    if (noScrollbar == withScrollbar) {
        withScrollbar = outer.clientWidth;
    }

    body.removeChild(outer);

    return noScrollbar-withScrollbar;
};

if (typeof document == "undefined") {
    exports.importCssString = function() {};
}

exports.computedStyle = function(element, style) {
    return window.getComputedStyle(element, "") || {};
};

exports.setStyle = function(styles, property, value) {
    if (styles[property] !== value) {
        styles[property] = value;
    }
};

exports.HAS_CSS_ANIMATION = false;
exports.HAS_CSS_TRANSFORMS = false;
exports.HI_DPI = useragent.isWin
    ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5
    : true;

if (typeof document !== "undefined") {
    var div = document.createElement("div");
    if (exports.HI_DPI && div.style.transform  !== undefined)
        exports.HAS_CSS_TRANSFORMS = true;
    if (!useragent.isEdge && typeof div.style.animationName !== "undefined")
        exports.HAS_CSS_ANIMATION = true;
    div = null;
}

if (exports.HAS_CSS_TRANSFORMS) {
    exports.translate = function(element, tx, ty) {
        element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) +"px)";
    };
} else {
    exports.translate = function(element, tx, ty) {
        element.style.top = Math.round(ty) + "px";
        element.style.left = Math.round(tx) + "px";
    };
}

});

ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module) {
"use strict";

exports.inherits = function(ctor, superCtor) {
    ctor.super_ = superCtor;
    ctor.prototype = Object.create(superCtor.prototype, {
        constructor: {
            value: ctor,
            enumerable: false,
            writable: true,
            configurable: true
        }
    });
};

exports.mixin = function(obj, mixin) {
    for (var key in mixin) {
        obj[key] = mixin[key];
    }
    return obj;
};

exports.implement = function(proto, mixin) {
    exports.mixin(proto, mixin);
};

});

ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module) {
"use strict";

var oop = require("./oop");
var Keys = (function() {
    var ret = {
        MODIFIER_KEYS: {
            16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',
            91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'
        },

        KEY_MODS: {
            "ctrl": 1, "alt": 2, "option" : 2, "shift": 4,
            "super": 8, "meta": 8, "command": 8, "cmd": 8
        },

        FUNCTION_KEYS : {
            8  : "Backspace",
            9  : "Tab",
            13 : "Return",
            19 : "Pause",
            27 : "Esc",
            32 : "Space",
            33 : "PageUp",
            34 : "PageDown",
            35 : "End",
            36 : "Home",
            37 : "Left",
            38 : "Up",
            39 : "Right",
            40 : "Down",
            44 : "Print",
            45 : "Insert",
            46 : "Delete",
            96 : "Numpad0",
            97 : "Numpad1",
            98 : "Numpad2",
            99 : "Numpad3",
            100: "Numpad4",
            101: "Numpad5",
            102: "Numpad6",
            103: "Numpad7",
            104: "Numpad8",
            105: "Numpad9",
            '-13': "NumpadEnter",
            112: "F1",
            113: "F2",
            114: "F3",
            115: "F4",
            116: "F5",
            117: "F6",
            118: "F7",
            119: "F8",
            120: "F9",
            121: "F10",
            122: "F11",
            123: "F12",
            144: "Numlock",
            145: "Scrolllock"
        },

        PRINTABLE_KEYS: {
           32: ' ',  48: '0',  49: '1',  50: '2',  51: '3',  52: '4', 53:  '5',
           54: '6',  55: '7',  56: '8',  57: '9',  59: ';',  61: '=', 65:  'a',
           66: 'b',  67: 'c',  68: 'd',  69: 'e',  70: 'f',  71: 'g', 72:  'h',
           73: 'i',  74: 'j',  75: 'k',  76: 'l',  77: 'm',  78: 'n', 79:  'o',
           80: 'p',  81: 'q',  82: 'r',  83: 's',  84: 't',  85: 'u', 86:  'v',
           87: 'w',  88: 'x',  89: 'y',  90: 'z', 107: '+', 109: '-', 110: '.',
          186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',
          219: '[', 220: '\\',221: ']', 222: "'", 111: '/', 106: '*'
        }
    };
    var name, i;
    for (i in ret.FUNCTION_KEYS) {
        name = ret.FUNCTION_KEYS[i].toLowerCase();
        ret[name] = parseInt(i, 10);
    }
    for (i in ret.PRINTABLE_KEYS) {
        name = ret.PRINTABLE_KEYS[i].toLowerCase();
        ret[name] = parseInt(i, 10);
    }
    oop.mixin(ret, ret.MODIFIER_KEYS);
    oop.mixin(ret, ret.PRINTABLE_KEYS);
    oop.mixin(ret, ret.FUNCTION_KEYS);
    ret.enter = ret["return"];
    ret.escape = ret.esc;
    ret.del = ret["delete"];
    ret[173] = '-';
    
    (function() {
        var mods = ["cmd", "ctrl", "alt", "shift"];
        for (var i = Math.pow(2, mods.length); i--;) {            
            ret.KEY_MODS[i] = mods.filter(function(x) {
                return i & ret.KEY_MODS[x];
            }).join("-") + "-";
        }
    })();

    ret.KEY_MODS[0] = "";
    ret.KEY_MODS[-1] = "input-";

    return ret;
})();
oop.mixin(exports, Keys);

exports.keyCodeToString = function(keyCode) {
    var keyString = Keys[keyCode];
    if (typeof keyString != "string")
        keyString = String.fromCharCode(keyCode);
    return keyString.toLowerCase();
};

});

ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) {
"use strict";

var keys = require("./keys");
var useragent = require("./useragent");

var pressedKeys = null;
var ts = 0;

var activeListenerOptions;
function detectListenerOptionsSupport() {
    activeListenerOptions = false;
    try {
        document.createComment("").addEventListener("test", function() {}, { 
            get passive() { 
                activeListenerOptions = {passive: false};
            }
        });
    } catch(e) {}
}

function getListenerOptions() {
    if (activeListenerOptions == undefined)
        detectListenerOptionsSupport();
    return activeListenerOptions;
}

exports.addListener = function(elem, type, callback) {
    return elem.addEventListener(type, callback, getListenerOptions());
};

exports.removeListener = function(elem, type, callback) {
    return elem.removeEventListener(type, callback, getListenerOptions());
};
exports.stopEvent = function(e) {
    exports.stopPropagation(e);
    exports.preventDefault(e);
    return false;
};

exports.stopPropagation = function(e) {
    if (e.stopPropagation)
        e.stopPropagation();
};

exports.preventDefault = function(e) {
    if (e.preventDefault)
        e.preventDefault();
};
exports.getButton = function(e) {
    if (e.type == "dblclick")
        return 0;
    if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))
        return 2;
    return e.button;
};

exports.capture = function(el, eventHandler, releaseCaptureHandler) {
    function onMouseUp(e) {
        eventHandler && eventHandler(e);
        releaseCaptureHandler && releaseCaptureHandler(e);

        exports.removeListener(document, "mousemove", eventHandler, true);
        exports.removeListener(document, "mouseup", onMouseUp, true);
        exports.removeListener(document, "dragstart", onMouseUp, true);
    }

    exports.addListener(document, "mousemove", eventHandler, true);
    exports.addListener(document, "mouseup", onMouseUp, true);
    exports.addListener(document, "dragstart", onMouseUp, true);
    
    return onMouseUp;
};

exports.addMouseWheelListener = function(el, callback) {
    if ("onmousewheel" in el) {
        exports.addListener(el, "mousewheel", function(e) {
            var factor = 8;
            if (e.wheelDeltaX !== undefined) {
                e.wheelX = -e.wheelDeltaX / factor;
                e.wheelY = -e.wheelDeltaY / factor;
            } else {
                e.wheelX = 0;
                e.wheelY = -e.wheelDelta / factor;
            }
            callback(e);
        });
    } else if ("onwheel" in el) {
        exports.addListener(el, "wheel",  function(e) {
            var factor = 0.35;
            switch (e.deltaMode) {
                case e.DOM_DELTA_PIXEL:
                    e.wheelX = e.deltaX * factor || 0;
                    e.wheelY = e.deltaY * factor || 0;
                    break;
                case e.DOM_DELTA_LINE:
                case e.DOM_DELTA_PAGE:
                    e.wheelX = (e.deltaX || 0) * 5;
                    e.wheelY = (e.deltaY || 0) * 5;
                    break;
            }
            
            callback(e);
        });
    } else {
        exports.addListener(el, "DOMMouseScroll", function(e) {
            if (e.axis && e.axis == e.HORIZONTAL_AXIS) {
                e.wheelX = (e.detail || 0) * 5;
                e.wheelY = 0;
            } else {
                e.wheelX = 0;
                e.wheelY = (e.detail || 0) * 5;
            }
            callback(e);
        });
    }
};

exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) {
    var clicks = 0;
    var startX, startY, timer; 
    var eventNames = {
        2: "dblclick",
        3: "tripleclick",
        4: "quadclick"
    };

    function onMousedown(e) {
        if (exports.getButton(e) !== 0) {
            clicks = 0;
        } else if (e.detail > 1) {
            clicks++;
            if (clicks > 4)
                clicks = 1;
        } else {
            clicks = 1;
        }
        if (useragent.isIE) {
            var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;
            if (!timer || isNewClick)
                clicks = 1;
            if (timer)
                clearTimeout(timer);
            timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);

            if (clicks == 1) {
                startX = e.clientX;
                startY = e.clientY;
            }
        }
        
        e._clicks = clicks;

        eventHandler[callbackName]("mousedown", e);

        if (clicks > 4)
            clicks = 0;
        else if (clicks > 1)
            return eventHandler[callbackName](eventNames[clicks], e);
    }
    if (!Array.isArray(elements))
        elements = [elements];
    elements.forEach(function(el) {
        exports.addListener(el, "mousedown", onMousedown);
    });
};

var getModifierHash = function(e) {
    return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);
};

exports.getModifierString = function(e) {
    return keys.KEY_MODS[getModifierHash(e)];
};

function normalizeCommandKeys(callback, e, keyCode) {
    var hashId = getModifierHash(e);

    if (!useragent.isMac && pressedKeys) {
        if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win")))
            hashId |= 8;
        if (pressedKeys.altGr) {
            if ((3 & hashId) != 3)
                pressedKeys.altGr = 0;
            else
                return;
        }
        if (keyCode === 18 || keyCode === 17) {
            var location = "location" in e ? e.location : e.keyLocation;
            if (keyCode === 17 && location === 1) {
                if (pressedKeys[keyCode] == 1)
                    ts = e.timeStamp;
            } else if (keyCode === 18 && hashId === 3 && location === 2) {
                var dt = e.timeStamp - ts;
                if (dt < 50)
                    pressedKeys.altGr = true;
            }
        }
    }
    
    if (keyCode in keys.MODIFIER_KEYS) {
        keyCode = -1;
    }
    
    if (!hashId && keyCode === 13) {
        var location = "location" in e ? e.location : e.keyLocation;
        if (location === 3) {
            callback(e, hashId, -keyCode);
            if (e.defaultPrevented)
                return;
        }
    }
    
    if (useragent.isChromeOS && hashId & 8) {
        callback(e, hashId, keyCode);
        if (e.defaultPrevented)
            return;
        else
            hashId &= ~8;
    }
    if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {
        return false;
    }
    
    return callback(e, hashId, keyCode);
}


exports.addCommandKeyListener = function(el, callback) {
    var addListener = exports.addListener;
    if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) {
        var lastKeyDownKeyCode = null;
        addListener(el, "keydown", function(e) {
            lastKeyDownKeyCode = e.keyCode;
        });
        addListener(el, "keypress", function(e) {
            return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);
        });
    } else {
        var lastDefaultPrevented = null;

        addListener(el, "keydown", function(e) {
            pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;
            var result = normalizeCommandKeys(callback, e, e.keyCode);
            lastDefaultPrevented = e.defaultPrevented;
            return result;
        });

        addListener(el, "keypress", function(e) {
            if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {
                exports.stopEvent(e);
                lastDefaultPrevented = null;
            }
        });

        addListener(el, "keyup", function(e) {
            pressedKeys[e.keyCode] = null;
        });

        if (!pressedKeys) {
            resetPressedKeys();
            addListener(window, "focus", resetPressedKeys);
        }
    }
};
function resetPressedKeys() {
    pressedKeys = Object.create(null);
}

if (typeof window == "object" && window.postMessage && !useragent.isOldIE) {
    var postMessageId = 1;
    exports.nextTick = function(callback, win) {
        win = win || window;
        var messageName = "zero-timeout-message-" + (postMessageId++);
        
        var listener = function(e) {
            if (e.data == messageName) {
                exports.stopPropagation(e);
                exports.removeListener(win, "message", listener);
                callback();
            }
        };
        
        exports.addListener(win, "message", listener);
        win.postMessage(messageName, "*");
    };
}

exports.$idleBlocked = false;
exports.onIdle = function(cb, timeout) {
    return setTimeout(function handler() {
        if (!exports.$idleBlocked) {
            cb();
        } else {
            setTimeout(handler, 100);
        }
    }, timeout);
};

exports.$idleBlockId = null;
exports.blockIdle = function(delay) {
    if (exports.$idleBlockId)
        clearTimeout(exports.$idleBlockId);
        
    exports.$idleBlocked = true;
    exports.$idleBlockId = setTimeout(function() {
        exports.$idleBlocked = false;
    }, delay || 100);
};

exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame
    || window.mozRequestAnimationFrame
    || window.webkitRequestAnimationFrame
    || window.msRequestAnimationFrame
    || window.oRequestAnimationFrame);

if (exports.nextFrame)
    exports.nextFrame = exports.nextFrame.bind(window);
else
    exports.nextFrame = function(callback) {
        setTimeout(callback, 17);
    };
});

ace.define("ace/range",["require","exports","module"], function(require, exports, module) {
"use strict";
var comparePoints = function(p1, p2) {
    return p1.row - p2.row || p1.column - p2.column;
};
var 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 this.compare(row, column) == 0;
    };
    this.compareRange = function(range) {
        var cmp,
            end = range.end,
            start = range.start;

        cmp = this.compare(end.row, end.column);
        if (cmp == 1) {
            cmp = this.compare(start.row, start.column);
            if (cmp == 1) {
                return 2;
            } else if (cmp == 0) {
                return 1;
            } else {
                return 0;
            }
        } else if (cmp == -1) {
            return -2;
        } else {
            cmp = this.compare(start.row, start.column);
            if (cmp == -1) {
                return -1;
            } else if (cmp == 1) {
                return 42;
            } else {
                return 0;
            }
        }
    };
    this.comparePoint = function(p) {
        return this.compare(p.row, p.column);
    };
    this.containsRange = function(range) {
        return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
    };
    this.intersects = function(range) {
        var cmp = this.compareRange(range);
        return (cmp == -1 || cmp == 0 || cmp == 1);
    };
    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) {
        if (typeof row == "object") {
            this.start.column = row.column;
            this.start.row = row.row;
        } else {
            this.start.row = row;
            this.start.column = column;
        }
    };
    this.setEnd = function(row, column) {
        if (typeof row == "object") {
            this.end.column = row.column;
            this.end.row = row.row;
        } else {
            this.end.row = row;
            this.end.column = column;
        }
    };
    this.inside = function(row, column) {
        if (this.compare(row, column) == 0) {
            if (this.isEnd(row, column) || this.isStart(row, column)) {
                return false;
            } else {
                return true;
            }
        }
        return false;
    };
    this.insideStart = function(row, column) {
        if (this.compare(row, column) == 0) {
            if (this.isEnd(row, column)) {
                return false;
            } else {
                return true;
            }
        }
        return false;
    };
    this.insideEnd = function(row, column) {
        if (this.compare(row, column) == 0) {
            if (this.isStart(row, column)) {
                return false;
            } else {
                return true;
            }
        }
        return false;
    };
    this.compare = function(row, column) {
        if (!this.isMultiLine()) {
            if (row === this.start.row) {
                return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
            }
        }

        if (row < this.start.row)
            return -1;

        if (row > this.end.row)
            return 1;

        if (this.start.row === row)
            return column >= this.start.column ? 0 : -1;

        if (this.end.row === row)
            return column <= this.end.column ? 0 : 1;

        return 0;
    };
    this.compareStart = function(row, column) {
        if (this.start.row == row && this.start.column == column) {
            return -1;
        } else {
            return this.compare(row, column);
        }
    };
    this.compareEnd = function(row, column) {
        if (this.end.row == row && this.end.column == column) {
            return 1;
        } else {
            return this.compare(row, column);
        }
    };
    this.compareInside = function(row, column) {
        if (this.end.row == row && this.end.column == column) {
            return 1;
        } else if (this.start.row == row && this.start.column == column) {
            return -1;
        } else {
            return this.compare(row, column);
        }
    };
    this.clipRows = function(firstRow, lastRow) {
        if (this.end.row > lastRow)
            var end = {row: lastRow + 1, column: 0};
        else if (this.end.row < firstRow)
            var end = {row: firstRow, column: 0};

        if (this.start.row > lastRow)
            var start = {row: lastRow + 1, column: 0};
        else if (this.start.row < firstRow)
            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 (cmp == 0)
            return this;
        else if (cmp == -1)
            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() {
        if (this.end.column == 0)
            return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);
        else
            return new Range(this.start.row, 0, this.end.row, 0);
    };
    this.toScreenRange = function(session) {
        var screenPosStart = session.documentToScreenPosition(this.start);
        var 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/lib/lang",["require","exports","module"], function(require, exports, module) {
"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) {
    var result = '';
    while (count > 0) {
        if (count & 1)
            result += string;

        if (count >>= 1)
            string += string;
    }
    return result;
};

var trimBeginRegexp = /^\s\s*/;
var 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){
    var copy = [];
    for (var i=0, l=array.length; i<l; i++) {
        if (array[i] && typeof array[i] == "object")
            copy[i] = this.copyObject(array[i]);
        else 
            copy[i] = array[i];
    }
    return copy;
};

exports.deepCopy = function deepCopy(obj) {
    if (typeof obj !== "object" || !obj)
        return obj;
    var copy;
    if (Array.isArray(obj)) {
        copy = [];
        for (var key = 0; key < obj.length; key++) {
            copy[key] = deepCopy(obj[key]);
        }
        return copy;
    }
    if (Object.prototype.toString.call(obj) !== "[object Object]")
        return obj;
    
    copy = {};
    for (var key in obj)
        copy[key] = deepCopy(obj[key]);
    return copy;
};

exports.arrayToMap = function(arr) {
    var map = {};
    for (var i=0; i<arr.length; 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; i <= array.length; i++) {
    if (value === array[i]) {
      array.splice(i, 1);
    }
  }
};

exports.escapeRegExp = function(str) {
    return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
};

exports.escapeHTML = function(str) {
    return ("" + str).replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
};

exports.getMatchOffsets = function(string, regExp) {
    var matches = [];

    string.replace(regExp, function(str) {
        matches.push({
            offset: arguments[arguments.length-2],
            length: str.length
        });
    });

    return matches;
};
exports.deferredCall = function(fcn) {
    var timer = null;
    var callback = function() {
        timer = null;
        fcn();
    };

    var deferred = function(timeout) {
        deferred.cancel();
        timer = setTimeout(callback, timeout || 0);
        return deferred;
    };

    deferred.schedule = deferred;

    deferred.call = function() {
        this.cancel();
        fcn();
        return deferred;
    };

    deferred.cancel = function() {
        clearTimeout(timer);
        timer = null;
        return deferred;
    };
    
    deferred.isPending = function() {
        return timer;
    };

    return deferred;
};


exports.delayedCall = function(fcn, defaultTimeout) {
    var timer = null;
    var callback = function() {
        timer = null;
        fcn();
    };

    var _self = function(timeout) {
        if (timer == null)
            timer = setTimeout(callback, timeout || defaultTimeout);
    };

    _self.delay = function(timeout) {
        timer && clearTimeout(timer);
        timer = setTimeout(callback, timeout || defaultTimeout);
    };
    _self.schedule = _self;

    _self.call = function() {
        this.cancel();
        fcn();
    };

    _self.cancel = function() {
        timer && clearTimeout(timer);
        timer = null;
    };

    _self.isPending = function() {
        return timer;
    };

    return _self;
};
});

ace.define("ace/clipboard",["require","exports","module"], function(require, exports, module) {
"use strict";

var $cancelT;
module.exports = { 
    lineMode: false,
    pasteCancelled: function() {
        if ($cancelT && $cancelT > Date.now() - 50)
            return true;
        return $cancelT = false;
    },
    cancel: function() {
        $cancelT = Date.now();
    }
};

});

ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module) {
"use strict";

var event = require("../lib/event");
var useragent = require("../lib/useragent");
var dom = require("../lib/dom");
var lang = require("../lib/lang");
var clipboard = require("../clipboard");
var BROKEN_SETDATA = useragent.isChrome < 18;
var USE_IE_MIME_TYPE =  useragent.isIE;
var HAS_FOCUS_ARGS = useragent.isChrome > 63;
var MAX_LINE_LENGTH = 400;

var KEYS = require("../lib/keys");
var MODS = KEYS.KEY_MODS;
var isIOS = useragent.isIOS;
var valueResetRegex = isIOS ? /\s/ : /\n/;

var TextInput = function(parentNode, host) {
    var text = dom.createElement("textarea");
    text.className = "ace_text-input";

    text.setAttribute("wrap", "off");
    text.setAttribute("autocorrect", "off");
    text.setAttribute("autocapitalize", "off");
    text.setAttribute("spellcheck", false);

    text.style.opacity = "0";
    parentNode.insertBefore(text, parentNode.firstChild);

    var copied = false;
    var pasted = false;
    var inComposition = false;
    var sendingText = false;
    var tempStyle = '';
    
    if (!useragent.isMobile)
        text.style.fontSize = "1px";

    var commandMode = false;
    var ignoreFocusEvents = false;
    
    var lastValue = "";
    var lastSelectionStart = 0;
    var lastSelectionEnd = 0;
    var lastRestoreEnd = 0;
    try { var isFocused = document.activeElement === text; } catch(e) {}
    
    event.addListener(text, "blur", function(e) {
        if (ignoreFocusEvents) return;
        host.onBlur(e);
        isFocused = false;
    });
    event.addListener(text, "focus", function(e) {
        if (ignoreFocusEvents) return;
        isFocused = true;
        if (useragent.isEdge) {
            try {
                if (!document.hasFocus())
                    return;
            } catch(e) {}
        }
        host.onFocus(e);
        if (useragent.isEdge)
            setTimeout(resetSelection);
        else
            resetSelection();
    });
    this.$focusScroll = false;
    this.focus = function() {
        if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser")
            return text.focus({ preventScroll: true });

        var top = text.style.top;
        text.style.position = "fixed";
        text.style.top = "0px";
        try {
            var isTransformed = text.getBoundingClientRect().top != 0;
        } catch(e) {
            return;
        }
        var ancestors = [];
        if (isTransformed) {
            var t = text.parentElement;
            while (t && t.nodeType == 1) {
                ancestors.push(t);
                t.setAttribute("ace_nocontext", true);
                if (!t.parentElement && t.getRootNode)
                    t = t.getRootNode().host;
                else
                    t = t.parentElement;
            }
        }
        text.focus({ preventScroll: true });
        if (isTransformed) {
            ancestors.forEach(function(p) {
                p.removeAttribute("ace_nocontext");
            });
        }
        setTimeout(function() {
            text.style.position = "";
            if (text.style.top == "0px")
                text.style.top = top;
        }, 0);
    };
    this.blur = function() {
        text.blur();
    };
    this.isFocused = function() {
        return isFocused;
    };
    
    host.on("beforeEndOperation", function() {
        if (host.curOp && host.curOp.command.name == "insertstring")
            return;
        if (inComposition) {
            lastValue = text.value = "";
            onCompositionEnd();
        }
        resetSelection();
    });
    
    var resetSelection = isIOS
    ? function(value) {
        if (!isFocused || (copied && !value) || sendingText) return;
        if (!value) 
            value = "";
        var newValue = "\n ab" + value + "cde fg\n";
        if (newValue != text.value)
            text.value = lastValue = newValue;
        
        var selectionStart = 4;
        var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));

        if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {
            text.setSelectionRange(selectionStart, selectionEnd);
        }
        lastSelectionStart = selectionStart;
        lastSelectionEnd = selectionEnd;
    }
    : function() {
        if (inComposition || sendingText)
            return;
        if (!isFocused && !afterContextMenu)
            return;
        inComposition = true;
        
        var selection = host.selection;
        var range = selection.getRange();
        var row = selection.cursor.row;
        var selectionStart = range.start.column;
        var selectionEnd = range.end.column;
        var line = host.session.getLine(row);

        if (range.start.row != row) {
            var prevLine = host.session.getLine(row - 1);
            selectionStart = range.start.row < row - 1 ? 0 : selectionStart;
            selectionEnd += prevLine.length + 1;
            line = prevLine + "\n" + line;
        }
        else if (range.end.row != row) {
            var nextLine = host.session.getLine(row + 1);
            selectionEnd = range.end.row > row  + 1 ? nextLine.length : selectionEnd;
            selectionEnd += line.length + 1;
            line = line + "\n" + nextLine;
        }

        if (line.length > MAX_LINE_LENGTH) {
            if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {
                line = line.slice(0, MAX_LINE_LENGTH);
            } else {
                line = "\n";
                selectionStart = 0;
                selectionEnd = 1;
            }
        }

        var newValue = line + "\n\n";
        if (newValue != lastValue) {
            text.value = lastValue = newValue;
            lastSelectionStart = lastSelectionEnd = newValue.length;
        }
        if (afterContextMenu) {
            lastSelectionStart = text.selectionStart;
            lastSelectionEnd = text.selectionEnd;
        }
        if (
            lastSelectionEnd != selectionEnd 
            || lastSelectionStart != selectionStart 
            || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization
        ) {
            try {
                text.setSelectionRange(selectionStart, selectionEnd);
                lastSelectionStart = selectionStart;
                lastSelectionEnd = selectionEnd;
            } catch(e){}
        }
        inComposition = false;
    };

    if (isFocused)
        host.onFocus();


    var isAllSelected = function(text) {
        return text.selectionStart === 0 && text.selectionEnd >= lastValue.length
            && text.value === lastValue && lastValue
            && text.selectionEnd !== lastSelectionEnd;
    };

    var onSelect = function(e) {
        if (inComposition)
            return;
        if (copied) {
            copied = false;
        } else if (isAllSelected(text)) {
            host.selectAll();
            resetSelection();
        }
    };

    var inputHandler = null;
    this.setInputHandler = function(cb) {inputHandler = cb;};
    this.getInputHandler = function() {return inputHandler;};
    var afterContextMenu = false;
    
    var sendText = function(value, fromInput) {
        if (afterContextMenu)
            afterContextMenu = false;
        if (pasted) {
            resetSelection();
            if (value)
                host.onPaste(value);
            pasted = false;
            return "";
        } else {
            var selectionStart = text.selectionStart;
            var selectionEnd = text.selectionEnd;
        
            var extendLeft = lastSelectionStart;
            var extendRight = lastValue.length - lastSelectionEnd;
            
            var inserted = value;
            var restoreStart = value.length - selectionStart;
            var restoreEnd = value.length - selectionEnd;
        
            var i = 0;
            while (extendLeft > 0 && lastValue[i] == value[i]) {
                i++;
                extendLeft--;
            }
            inserted = inserted.slice(i);
            i = 1;
            while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1  && lastValue[lastValue.length - i] == value[value.length - i]) {
                i++;
                extendRight--;
            }
            restoreStart -= i-1;
            restoreEnd -= i-1;
            var endIndex = inserted.length - i + 1;
            if (endIndex < 0) {
                extendLeft = -endIndex;
                endIndex = 0;
            } 
            inserted = inserted.slice(0, endIndex);
            if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)
                return "";
            sendingText = true;
            if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {
                host.onTextInput(inserted);
            } else {
                host.onTextInput(inserted, {
                    extendLeft: extendLeft,
                    extendRight: extendRight,
                    restoreStart: restoreStart,
                    restoreEnd: restoreEnd
                });
            }
            sendingText = false;
            
            lastValue = value;
            lastSelectionStart = selectionStart;
            lastSelectionEnd = selectionEnd;
            lastRestoreEnd = restoreEnd;
            return inserted;
        }
    };
    var onInput = function(e) {
        if (inComposition)
            return onCompositionUpdate();
        if (e && e.inputType) {
            if (e.inputType == "historyUndo") return host.execCommand("undo");
            if (e.inputType == "historyRedo") return host.execCommand("redo");
        }
        var data = text.value;
        var inserted = sendText(data, true);
        if (data.length > MAX_LINE_LENGTH + 100 || valueResetRegex.test(inserted))
            resetSelection();
    };
    
    var handleClipboardData = function(e, data, forceIEMime) {
        var clipboardData = e.clipboardData || window.clipboardData;
        if (!clipboardData || BROKEN_SETDATA)
            return;
        var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain";
        try {
            if (data) {
                return clipboardData.setData(mime, data) !== false;
            } else {
                return clipboardData.getData(mime);
            }
        } catch(e) {
            if (!forceIEMime)
                return handleClipboardData(e, data, true);
        }
    };

    var doCopy = function(e, isCut) {
        var data = host.getCopyText();
        if (!data)
            return event.preventDefault(e);

        if (handleClipboardData(e, data)) {
            if (isIOS) {
                resetSelection(data);
                copied = data;
                setTimeout(function () {
                    copied = false;
                }, 10);
            }
            isCut ? host.onCut() : host.onCopy();
            event.preventDefault(e);
        } else {
            copied = true;
            text.value = data;
            text.select();
            setTimeout(function(){
                copied = false;
                resetSelection();
                isCut ? host.onCut() : host.onCopy();
            });
        }
    };
    
    var onCut = function(e) {
        doCopy(e, true);
    };
    
    var onCopy = function(e) {
        doCopy(e, false);
    };
    
    var onPaste = function(e) {
        var data = handleClipboardData(e);
        if (clipboard.pasteCancelled())
            return;
        if (typeof data == "string") {
            if (data)
                host.onPaste(data, e);
            if (useragent.isIE)
                setTimeout(resetSelection);
            event.preventDefault(e);
        }
        else {
            text.value = "";
            pasted = true;
        }
    };

    event.addCommandKeyListener(text, host.onCommandKey.bind(host));

    event.addListener(text, "select", onSelect);
    event.addListener(text, "input", onInput);

    event.addListener(text, "cut", onCut);
    event.addListener(text, "copy", onCopy);
    event.addListener(text, "paste", onPaste);
    if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {
        event.addListener(parentNode, "keydown", function(e) {
            if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)
                return;

            switch (e.keyCode) {
                case 67:
                    onCopy(e);
                    break;
                case 86:
                    onPaste(e);
                    break;
                case 88:
                    onCut(e);
                    break;
            }
        });
    }
    var onCompositionStart = function(e) {
        if (inComposition || !host.onCompositionStart || host.$readOnly) 
            return;
        
        inComposition = {};

        if (commandMode)
            return;
        
        setTimeout(onCompositionUpdate, 0);
        host.on("mousedown", cancelComposition);
        
        var range = host.getSelectionRange();
        range.end.row = range.start.row;
        range.end.column = range.start.column;
        inComposition.markerRange = range;
        inComposition.selectionStart = lastSelectionStart;
        host.onCompositionStart(inComposition);
        
        if (inComposition.useTextareaForIME) {
            text.value = "";
            lastValue = "";
            lastSelectionStart = 0;
            lastSelectionEnd = 0;
        }
        else {
            if (text.msGetInputContext)
                inComposition.context = text.msGetInputContext();
            if (text.getInputContext)
                inComposition.context = text.getInputContext();
        }
    };

    var onCompositionUpdate = function() {
        if (!inComposition || !host.onCompositionUpdate || host.$readOnly)
            return;
        if (commandMode)
            return cancelComposition();
        
        if (inComposition.useTextareaForIME) {
            host.onCompositionUpdate(text.value);
        }
        else {
            var data = text.value;
            sendText(data);
            if (inComposition.markerRange) {
                if (inComposition.context) {
                    inComposition.markerRange.start.column = inComposition.selectionStart
                        = inComposition.context.compositionStartOffset;
                }
                inComposition.markerRange.end.column = inComposition.markerRange.start.column
                    + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;
            }
        }
    };

    var onCompositionEnd = function(e) {
        if (!host.onCompositionEnd || host.$readOnly) return;
        inComposition = false;
        host.onCompositionEnd();
        host.off("mousedown", cancelComposition);
        if (e) onInput();
    };
    

    function cancelComposition() {
        ignoreFocusEvents = true;
        text.blur();
        text.focus();
        ignoreFocusEvents = false;
    }

    var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);
    
    function onKeyup(e) {
        if (e.keyCode == 27 && text.value.length < text.selectionStart) {
            if (!inComposition)
                lastValue = text.value;
            lastSelectionStart = lastSelectionEnd = -1;
            resetSelection();
        }
        syncComposition();
    }

    event.addListener(text, "compositionstart", onCompositionStart);
    event.addListener(text, "compositionupdate", onCompositionUpdate);
    event.addListener(text, "keyup", onKeyup);
    event.addListener(text, "keydown", syncComposition);
    event.addListener(text, "compositionend", onCompositionEnd);

    this.getElement = function() {
        return text;
    };
    this.setCommandMode = function(value) {
       commandMode = value;
       text.readOnly = false;
    };
    
    this.setReadOnly = function(readOnly) {
        if (!commandMode)
            text.readOnly = readOnly;
    };

    this.setCopyWithEmptySelection = function(value) {
    };

    this.onContextMenu = function(e) {
        afterContextMenu = true;
        resetSelection();
        host._emit("nativecontextmenu", {target: host, domEvent: e});
        this.moveToMouse(e, true);
    };
    
    this.moveToMouse = function(e, bringToFront) {
        if (!tempStyle)
            tempStyle = text.style.cssText;
        text.style.cssText = (bringToFront ? "z-index:100000;" : "")
            + (useragent.isIE ? "opacity:0.1;" : "")
            + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;";

        var rect = host.container.getBoundingClientRect();
        var style = dom.computedStyle(host.container);
        var top = rect.top + (parseInt(style.borderTopWidth) || 0);
        var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);
        var maxTop = rect.bottom - top - text.clientHeight -2;
        var move = function(e) {
            dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));
        }; 
        move(e);

        if (e.type != "mousedown")
            return;

        host.renderer.$isMousePressed = true;

        clearTimeout(closeTimeout);
        if (useragent.isWin)
            event.capture(host.container, move, onContextMenuClose);
    };

    this.onContextMenuClose = onContextMenuClose;
    var closeTimeout;
    function onContextMenuClose() {
        clearTimeout(closeTimeout);
        closeTimeout = setTimeout(function () {
            if (tempStyle) {
                text.style.cssText = tempStyle;
                tempStyle = '';
            }
            host.renderer.$isMousePressed = false;
            if (host.renderer.$keepTextAreaAtCursor)
                host.renderer.$moveTextAreaToCursor();
        }, 0);
    }

    var onContextMenu = function(e) {
        host.textInput.onContextMenu(e);
        onContextMenuClose();
    };
    event.addListener(text, "mouseup", onContextMenu);
    event.addListener(text, "mousedown", function(e) {
        e.preventDefault();
        onContextMenuClose();
    });
    event.addListener(host.renderer.scroller, "contextmenu", onContextMenu);
    event.addListener(text, "contextmenu", onContextMenu);
    
    if (isIOS)
        addIosSelectionHandler(parentNode, host, text);

    function addIosSelectionHandler(parentNode, host, text) {
        var typingResetTimeout = null;
        var typing = false;
 
        text.addEventListener("keydown", function (e) {
            if (typingResetTimeout) clearTimeout(typingResetTimeout);
            typing = true;
        }, true);

        text.addEventListener("keyup", function (e) {
            typingResetTimeout = setTimeout(function () {
                typing = false;
            }, 100);
        }, true);
        var detectArrowKeys = function(e) {
            if (document.activeElement !== text) return;
            if (typing || inComposition || host.$mouseHandler.isMousePressed) return;

            if (copied) {
                return;
            }
            var selectionStart = text.selectionStart;
            var selectionEnd = text.selectionEnd;
            
            var key = null;
            var modifier = 0;
            if (selectionStart == 0) {
                key = KEYS.up;
            } else if (selectionStart == 1) {
                key = KEYS.home;
            } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") {
                key = KEYS.end;
            } else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") {
                key = KEYS.left;
                modifier = MODS.option;
            } else if (
                selectionStart < lastSelectionStart
                || (
                    selectionStart == lastSelectionStart 
                    && lastSelectionEnd != lastSelectionStart
                    && selectionStart == selectionEnd
                )
            ) {
                key = KEYS.left;
            } else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) {
                key = KEYS.down;
            } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") {
                key = KEYS.right;
                modifier = MODS.option;
            } else if (
                selectionEnd > lastSelectionEnd
                || (
                    selectionEnd == lastSelectionEnd 
                    && lastSelectionEnd != lastSelectionStart
                    && selectionStart == selectionEnd
                )
            ) {
                key = KEYS.right;
            }
            
            if (selectionStart !== selectionEnd)
                modifier |= MODS.shift;

            if (key) {
                var result = host.onCommandKey({}, modifier, key);
                if (!result && host.commands) {
                    key = KEYS.keyCodeToString(key);
                    var command = host.commands.findKeyCommand(modifier, key);
                    if (command)
                        host.execCommand(command);
                }
                lastSelectionStart = selectionStart;
                lastSelectionEnd = selectionEnd;
                resetSelection("");
            }
        };
        document.addEventListener("selectionchange", detectArrowKeys);
        host.on("destroy", function() {
            document.removeEventListener("selectionchange", detectArrowKeys);
        });
    }

};

exports.TextInput = TextInput;
});

ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module) {
"use strict";

var useragent = require("../lib/useragent");

var DRAG_OFFSET = 0; // pixels
var SCROLL_COOLDOWN_T = 550; // milliseconds

function DefaultHandlers(mouseHandler) {
    mouseHandler.$clickSelection = null;

    var editor = mouseHandler.editor;
    editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler));
    editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler));
    editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler));
    editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler));
    editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler));

    var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd",
        "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"];

    exports.forEach(function(x) {
        mouseHandler[x] = this[x];
    }, this);

    mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange");
    mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange");
}

(function() {

    this.onMouseDown = function(ev) {
        var inSelection = ev.inSelection();
        var pos = ev.getDocumentPosition();
        this.mousedownEvent = ev;
        var editor = this.editor;

        var button = ev.getButton();
        if (button !== 0) {
            var selectionRange = editor.getSelectionRange();
            var selectionEmpty = selectionRange.isEmpty();
            if (selectionEmpty || button == 1)
                editor.selection.moveToPosition(pos);
            if (button == 2) {
                editor.textInput.onContextMenu(ev.domEvent);
                if (!useragent.isMozilla)
                    ev.preventDefault();
            }
            return;
        }

        this.mousedownEvent.time = Date.now();
        if (inSelection && !editor.isFocused()) {
            editor.focus();
            if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {
                this.setState("focusWait");
                this.captureMouse(ev);
                return;
            }
        }

        this.captureMouse(ev);
        this.startSelect(pos, ev.domEvent._clicks > 1);
        return ev.preventDefault();
    };

    this.startSelect = function(pos, waitForClickSelection) {
        pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);
        var editor = this.editor;
        if (!this.mousedownEvent) return;
        if (this.mousedownEvent.getShiftKey())
            editor.selection.selectToPosition(pos);
        else if (!waitForClickSelection)
            editor.selection.moveToPosition(pos);
        if (!waitForClickSelection)
            this.select();
        if (editor.renderer.scroller.setCapture) {
            editor.renderer.scroller.setCapture();
        }
        editor.setStyle("ace_selecting");
        this.setState("select");
    };

    this.select = function() {
        var anchor, editor = this.editor;
        var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
        if (this.$clickSelection) {
            var cmp = this.$clickSelection.comparePoint(cursor);

            if (cmp == -1) {
                anchor = this.$clickSelection.end;
            } else if (cmp == 1) {
                anchor = this.$clickSelection.start;
            } else {
                var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
                cursor = orientedRange.cursor;
                anchor = orientedRange.anchor;
            }
            editor.selection.setSelectionAnchor(anchor.row, anchor.column);
        }
        editor.selection.selectToPosition(cursor);
        editor.renderer.scrollCursorIntoView();
    };

    this.extendSelectionBy = function(unitName) {
        var anchor, editor = this.editor;
        var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
        var range = editor.selection[unitName](cursor.row, cursor.column);
        if (this.$clickSelection) {
            var cmpStart = this.$clickSelection.comparePoint(range.start);
            var cmpEnd = this.$clickSelection.comparePoint(range.end);

            if (cmpStart == -1 && cmpEnd <= 0) {
                anchor = this.$clickSelection.end;
                if (range.end.row != cursor.row || range.end.column != cursor.column)
                    cursor = range.start;
            } else if (cmpEnd == 1 && cmpStart >= 0) {
                anchor = this.$clickSelection.start;
                if (range.start.row != cursor.row || range.start.column != cursor.column)
                    cursor = range.end;
            } else if (cmpStart == -1 && cmpEnd == 1) {
                cursor = range.end;
                anchor = range.start;
            } else {
                var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
                cursor = orientedRange.cursor;
                anchor = orientedRange.anchor;
            }
            editor.selection.setSelectionAnchor(anchor.row, anchor.column);
        }
        editor.selection.selectToPosition(cursor);
        editor.renderer.scrollCursorIntoView();
    };

    this.selectEnd =
    this.selectAllEnd =
    this.selectByWordsEnd =
    this.selectByLinesEnd = function() {
        this.$clickSelection = null;
        this.editor.unsetStyle("ace_selecting");
        if (this.editor.renderer.scroller.releaseCapture) {
            this.editor.renderer.scroller.releaseCapture();
        }
    };

    this.focusWait = function() {
        var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
        var time = Date.now();

        if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)
            this.startSelect(this.mousedownEvent.getDocumentPosition());
    };

    this.onDoubleClick = function(ev) {
        var pos = ev.getDocumentPosition();
        var editor = this.editor;
        var session = editor.session;

        var range = session.getBracketRange(pos);
        if (range) {
            if (range.isEmpty()) {
                range.start.column--;
                range.end.column++;
            }
            this.setState("select");
        } else {
            range = editor.selection.getWordRange(pos.row, pos.column);
            this.setState("selectByWords");
        }
        this.$clickSelection = range;
        this.select();
    };

    this.onTripleClick = function(ev) {
        var pos = ev.getDocumentPosition();
        var editor = this.editor;

        this.setState("selectByLines");
        var range = editor.getSelectionRange();
        if (range.isMultiLine() && range.contains(pos.row, pos.column)) {
            this.$clickSelection = editor.selection.getLineRange(range.start.row);
            this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;
        } else {
            this.$clickSelection = editor.selection.getLineRange(pos.row);
        }
        this.select();
    };

    this.onQuadClick = function(ev) {
        var editor = this.editor;

        editor.selectAll();
        this.$clickSelection = editor.getSelectionRange();
        this.setState("selectAll");
    };

    this.onMouseWheel = function(ev) {
        if (ev.getAccelKey())
            return;
        if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {
            ev.wheelX = ev.wheelY;
            ev.wheelY = 0;
        }
        
        var editor = this.editor;
        
        if (!this.$lastScroll)
            this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };
        
        var prevScroll = this.$lastScroll;
        var t = ev.domEvent.timeStamp;
        var dt = t - prevScroll.t;
        var vx = dt ? ev.wheelX / dt : prevScroll.vx;
        var vy = dt ? ev.wheelY / dt : prevScroll.vy;
        if (dt < SCROLL_COOLDOWN_T) {
            vx = (vx + prevScroll.vx) / 2;
            vy = (vy + prevScroll.vy) / 2;
        }
        
        var direction = Math.abs(vx / vy);
        
        var canScroll = false;
        if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))
            canScroll = true;
        if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))
            canScroll = true;
            
        if (canScroll) {
            prevScroll.allowed = t;
        } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {
            var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)
                && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);
            if (isSlower) {
                canScroll = true;
                prevScroll.allowed = t;
            }
            else {
                prevScroll.allowed = 0;
            }
        }
        
        prevScroll.t = t;
        prevScroll.vx = vx;
        prevScroll.vy = vy;

        if (canScroll) {
            editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);
            return ev.stop();
        }
    };

}).call(DefaultHandlers.prototype);

exports.DefaultHandlers = DefaultHandlers;

function calcDistance(ax, ay, bx, by) {
    return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
}

function calcRangeOrientation(range, cursor) {
    if (range.start.row == range.end.row)
        var cmp = 2 * cursor.column - range.start.column - range.end.column;
    else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)
        var cmp = cursor.column - 4;
    else
        var cmp = 2 * cursor.row - range.start.row - range.end.row;

    if (cmp < 0)
        return {cursor: range.start, anchor: range.end};
    else
        return {cursor: range.end, anchor: range.start};
}

});

ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"], function(require, exports, module) {
"use strict";

var oop = require("./lib/oop");
var dom = require("./lib/dom");
function Tooltip (parentNode) {
    this.isOpen = false;
    this.$element = null;
    this.$parentNode = parentNode;
}

(function() {
    this.$init = function() {
        this.$element = dom.createElement("div");
        this.$element.className = "ace_tooltip";
        this.$element.style.display = "none";
        this.$parentNode.appendChild(this.$element);
        return this.$element;
    };
    this.getElement = function() {
        return this.$element || this.$init();
    };
    this.setText = function(text) {
        this.getElement().textContent = text;
    };
    this.setHtml = function(html) {
        this.getElement().innerHTML = html;
    };
    this.setPosition = function(x, y) {
        this.getElement().style.left = x + "px";
        this.getElement().style.top = y + "px";
    };
    this.setClassName = function(className) {
        dom.addCssClass(this.getElement(), className);
    };
    this.show = function(text, x, y) {
        if (text != null)
            this.setText(text);
        if (x != null && y != null)
            this.setPosition(x, y);
        if (!this.isOpen) {
            this.getElement().style.display = "block";
            this.isOpen = true;
        }
    };

    this.hide = function() {
        if (this.isOpen) {
            this.getElement().style.display = "none";
            this.isOpen = false;
        }
    };
    this.getHeight = function() {
        return this.getElement().offsetHeight;
    };
    this.getWidth = function() {
        return this.getElement().offsetWidth;
    };
    
    this.destroy = function() {
        this.isOpen = false;
        if (this.$element && this.$element.parentNode) {
            this.$element.parentNode.removeChild(this.$element);
        }
    };

}).call(Tooltip.prototype);

exports.Tooltip = Tooltip;
});

ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"], function(require, exports, module) {
"use strict";
var dom = require("../lib/dom");
var oop = require("../lib/oop");
var event = require("../lib/event");
var Tooltip = require("../tooltip").Tooltip;

function GutterHandler(mouseHandler) {
    var editor = mouseHandler.editor;
    var gutter = editor.renderer.$gutterLayer;
    var tooltip = new GutterTooltip(editor.container);

    mouseHandler.editor.setDefaultHandler("guttermousedown", function(e) {
        if (!editor.isFocused() || e.getButton() != 0)
            return;
        var gutterRegion = gutter.getRegion(e);

        if (gutterRegion == "foldWidgets")
            return;

        var row = e.getDocumentPosition().row;
        var selection = editor.session.selection;

        if (e.getShiftKey())
            selection.selectTo(row, 0);
        else {
            if (e.domEvent.detail == 2) {
                editor.selectAll();
                return e.preventDefault();
            }
            mouseHandler.$clickSelection = editor.selection.getLineRange(row);
        }
        mouseHandler.setState("selectByLines");
        mouseHandler.captureMouse(e);
        return e.preventDefault();
    });


    var tooltipTimeout, mouseEvent, tooltipAnnotation;

    function showTooltip() {
        var row = mouseEvent.getDocumentPosition().row;
        var annotation = gutter.$annotations[row];
        if (!annotation)
            return hideTooltip();

        var maxRow = editor.session.getLength();
        if (row == maxRow) {
            var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;
            var pos = mouseEvent.$pos;
            if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))
                return hideTooltip();
        }

        if (tooltipAnnotation == annotation)
            return;
        tooltipAnnotation = annotation.text.join("<br/>");

        tooltip.setHtml(tooltipAnnotation);
        tooltip.show();
        editor._signal("showGutterTooltip", tooltip);
        editor.on("mousewheel", hideTooltip);

        if (mouseHandler.$tooltipFollowsMouse) {
            moveTooltip(mouseEvent);
        } else {
            var gutterElement = mouseEvent.domEvent.target;
            var rect = gutterElement.getBoundingClientRect();
            var style = tooltip.getElement().style;
            style.left = rect.right + "px";
            style.top = rect.bottom + "px";
        }
    }

    function hideTooltip() {
        if (tooltipTimeout)
            tooltipTimeout = clearTimeout(tooltipTimeout);
        if (tooltipAnnotation) {
            tooltip.hide();
            tooltipAnnotation = null;
            editor._signal("hideGutterTooltip", tooltip);
            editor.removeEventListener("mousewheel", hideTooltip);
        }
    }

    function moveTooltip(e) {
        tooltip.setPosition(e.x, e.y);
    }

    mouseHandler.editor.setDefaultHandler("guttermousemove", function(e) {
        var target = e.domEvent.target || e.domEvent.srcElement;
        if (dom.hasCssClass(target, "ace_fold-widget"))
            return hideTooltip();

        if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)
            moveTooltip(e);

        mouseEvent = e;
        if (tooltipTimeout)
            return;
        tooltipTimeout = setTimeout(function() {
            tooltipTimeout = null;
            if (mouseEvent && !mouseHandler.isMousePressed)
                showTooltip();
            else
                hideTooltip();
        }, 50);
    });

    event.addListener(editor.renderer.$gutter, "mouseout", function(e) {
        mouseEvent = null;
        if (!tooltipAnnotation || tooltipTimeout)
            return;

        tooltipTimeout = setTimeout(function() {
            tooltipTimeout = null;
            hideTooltip();
        }, 50);
    });
    
    editor.on("changeSession", hideTooltip);
}

function GutterTooltip(parentNode) {
    Tooltip.call(this, parentNode);
}

oop.inherits(GutterTooltip, Tooltip);

(function(){
    this.setPosition = function(x, y) {
        var windowWidth = window.innerWidth || document.documentElement.clientWidth;
        var windowHeight = window.innerHeight || document.documentElement.clientHeight;
        var width = this.getWidth();
        var height = this.getHeight();
        x += 15;
        y += 15;
        if (x + width > windowWidth) {
            x -= (x + width) - windowWidth;
        }
        if (y + height > windowHeight) {
            y -= 20 + height;
        }
        Tooltip.prototype.setPosition.call(this, x, y);
    };

}).call(GutterTooltip.prototype);



exports.GutterHandler = GutterHandler;

});

ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module) {
"use strict";

var event = require("../lib/event");
var useragent = require("../lib/useragent");
var MouseEvent = exports.MouseEvent = function(domEvent, editor) {
    this.domEvent = domEvent;
    this.editor = editor;
    
    this.x = this.clientX = domEvent.clientX;
    this.y = this.clientY = domEvent.clientY;

    this.$pos = null;
    this.$inSelection = null;
    
    this.propagationStopped = false;
    this.defaultPrevented = false;
};

(function() {  
    
    this.stopPropagation = function() {
        event.stopPropagation(this.domEvent);
        this.propagationStopped = true;
    };
    
    this.preventDefault = function() {
        event.preventDefault(this.domEvent);
        this.defaultPrevented = true;
    };
    
    this.stop = function() {
        this.stopPropagation();
        this.preventDefault();
    };
    this.getDocumentPosition = function() {
        if (this.$pos)
            return this.$pos;
        
        this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);
        return this.$pos;
    };
    this.inSelection = function() {
        if (this.$inSelection !== null)
            return this.$inSelection;
            
        var editor = this.editor;
        

        var selectionRange = editor.getSelectionRange();
        if (selectionRange.isEmpty())
            this.$inSelection = false;
        else {
            var pos = this.getDocumentPosition();
            this.$inSelection = selectionRange.contains(pos.row, pos.column);
        }

        return this.$inSelection;
    };
    this.getButton = function() {
        return event.getButton(this.domEvent);
    };
    this.getShiftKey = function() {
        return this.domEvent.shiftKey;
    };
    
    this.getAccelKey = useragent.isMac
        ? function() { return this.domEvent.metaKey; }
        : function() { return this.domEvent.ctrlKey; };
    
}).call(MouseEvent.prototype);

});

ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module) {
"use strict";

var dom = require("../lib/dom");
var event = require("../lib/event");
var useragent = require("../lib/useragent");

var AUTOSCROLL_DELAY = 200;
var SCROLL_CURSOR_DELAY = 200;
var SCROLL_CURSOR_HYSTERESIS = 5;

function DragdropHandler(mouseHandler) {

    var editor = mouseHandler.editor;

    var blankImage = dom.createElement("img");
    blankImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
    if (useragent.isOpera)
        blankImage.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;";

    var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"];

     exports.forEach(function(x) {
         mouseHandler[x] = this[x];
    }, this);
    editor.addEventListener("mousedown", this.onMouseDown.bind(mouseHandler));


    var mouseTarget = editor.container;
    var dragSelectionMarker, x, y;
    var timerId, range;
    var dragCursor, counter = 0;
    var dragOperation;
    var isInternal;
    var autoScrollStartTime;
    var cursorMovedTime;
    var cursorPointOnCaretMoved;

    this.onDragStart = function(e) {
        if (this.cancelDrag || !mouseTarget.draggable) {
            var self = this;
            setTimeout(function(){
                self.startSelect();
                self.captureMouse(e);
            }, 0);
            return e.preventDefault();
        }
        range = editor.getSelectionRange();

        var dataTransfer = e.dataTransfer;
        dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove";
        if (useragent.isOpera) {
            editor.container.appendChild(blankImage);
            blankImage.scrollTop = 0;
        }
        dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);
        if (useragent.isOpera) {
            editor.container.removeChild(blankImage);
        }
        dataTransfer.clearData();
        dataTransfer.setData("Text", editor.session.getTextRange());

        isInternal = true;
        this.setState("drag");
    };

    this.onDragEnd = function(e) {
        mouseTarget.draggable = false;
        isInternal = false;
        this.setState(null);
        if (!editor.getReadOnly()) {
            var dropEffect = e.dataTransfer.dropEffect;
            if (!dragOperation && dropEffect == "move")
                editor.session.remove(editor.getSelectionRange());
            editor.$resetCursorStyle();
        }
        this.editor.unsetStyle("ace_dragging");
        this.editor.renderer.setCursorStyle("");
    };

    this.onDragEnter = function(e) {
        if (editor.getReadOnly() || !canAccept(e.dataTransfer))
            return;
        x = e.clientX;
        y = e.clientY;
        if (!dragSelectionMarker)
            addDragMarker();
        counter++;
        e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);
        return event.preventDefault(e);
    };

    this.onDragOver = function(e) {
        if (editor.getReadOnly() || !canAccept(e.dataTransfer))
            return;
        x = e.clientX;
        y = e.clientY;
        if (!dragSelectionMarker) {
            addDragMarker();
            counter++;
        }
        if (onMouseMoveTimer !== null)
            onMouseMoveTimer = null;

        e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);
        return event.preventDefault(e);
    };

    this.onDragLeave = function(e) {
        counter--;
        if (counter <= 0 && dragSelectionMarker) {
            clearDragMarker();
            dragOperation = null;
            return event.preventDefault(e);
        }
    };

    this.onDrop = function(e) {
        if (!dragCursor)
            return;
        var dataTransfer = e.dataTransfer;
        if (isInternal) {
            switch (dragOperation) {
                case "move":
                    if (range.contains(dragCursor.row, dragCursor.column)) {
                        range = {
                            start: dragCursor,
                            end: dragCursor
                        };
                    } else {
                        range = editor.moveText(range, dragCursor);
                    }
                    break;
                case "copy":
                    range = editor.moveText(range, dragCursor, true);
                    break;
            }
        } else {
            var dropData = dataTransfer.getData('Text');
            range = {
                start: dragCursor,
                end: editor.session.insert(dragCursor, dropData)
            };
            editor.focus();
            dragOperation = null;
        }
        clearDragMarker();
        return event.preventDefault(e);
    };

    event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler));
    event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler));
    event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler));
    event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler));
    event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler));
    event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler));

    function scrollCursorIntoView(cursor, prevCursor) {
        var now = Date.now();
        var vMovement = !prevCursor || cursor.row != prevCursor.row;
        var hMovement = !prevCursor || cursor.column != prevCursor.column;
        if (!cursorMovedTime || vMovement || hMovement) {
            editor.moveCursorToPosition(cursor);
            cursorMovedTime = now;
            cursorPointOnCaretMoved = {x: x, y: y};
        } else {
            var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);
            if (distance > SCROLL_CURSOR_HYSTERESIS) {
                cursorMovedTime = null;
            } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {
                editor.renderer.scrollCursorIntoView();
                cursorMovedTime = null;
            }
        }
    }

    function autoScroll(cursor, prevCursor) {
        var now = Date.now();
        var lineHeight = editor.renderer.layerConfig.lineHeight;
        var characterWidth = editor.renderer.layerConfig.characterWidth;
        var editorRect = editor.renderer.scroller.getBoundingClientRect();
        var offsets = {
           x: {
               left: x - editorRect.left,
               right: editorRect.right - x
           },
           y: {
               top: y - editorRect.top,
               bottom: editorRect.bottom - y
           }
        };
        var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);
        var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);
        var scrollCursor = {row: cursor.row, column: cursor.column};
        if (nearestXOffset / characterWidth <= 2) {
            scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);
        }
        if (nearestYOffset / lineHeight <= 1) {
            scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);
        }
        var vScroll = cursor.row != scrollCursor.row;
        var hScroll = cursor.column != scrollCursor.column;
        var vMovement = !prevCursor || cursor.row != prevCursor.row;
        if (vScroll || (hScroll && !vMovement)) {
            if (!autoScrollStartTime)
                autoScrollStartTime = now;
            else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)
                editor.renderer.scrollCursorIntoView(scrollCursor);
        } else {
            autoScrollStartTime = null;
        }
    }

    function onDragInterval() {
        var prevCursor = dragCursor;
        dragCursor = editor.renderer.screenToTextCoordinates(x, y);
        scrollCursorIntoView(dragCursor, prevCursor);
        autoScroll(dragCursor, prevCursor);
    }

    function addDragMarker() {
        range = editor.selection.toOrientedRange();
        dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle());
        editor.clearSelection();
        if (editor.isFocused())
            editor.renderer.$cursorLayer.setBlinking(false);
        clearInterval(timerId);
        onDragInterval();
        timerId = setInterval(onDragInterval, 20);
        counter = 0;
        event.addListener(document, "mousemove", onMouseMove);
    }

    function clearDragMarker() {
        clearInterval(timerId);
        editor.session.removeMarker(dragSelectionMarker);
        dragSelectionMarker = null;
        editor.selection.fromOrientedRange(range);
        if (editor.isFocused() && !isInternal)
            editor.$resetCursorStyle();
        range = null;
        dragCursor = null;
        counter = 0;
        autoScrollStartTime = null;
        cursorMovedTime = null;
        event.removeListener(document, "mousemove", onMouseMove);
    }
    var onMouseMoveTimer = null;
    function onMouseMove() {
        if (onMouseMoveTimer == null) {
            onMouseMoveTimer = setTimeout(function() {
                if (onMouseMoveTimer != null && dragSelectionMarker)
                    clearDragMarker();
            }, 20);
        }
    }

    function canAccept(dataTransfer) {
        var types = dataTransfer.types;
        return !types || Array.prototype.some.call(types, function(type) {
            return type == 'text/plain' || type == 'Text';
        });
    }

    function getDropEffect(e) {
        var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];
        var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];

        var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;
        var effectAllowed = "uninitialized";
        try {
            effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();
        } catch (e) {}
        var dropEffect = "none";

        if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)
            dropEffect = "copy";
        else if (moveAllowed.indexOf(effectAllowed) >= 0)
            dropEffect = "move";
        else if (copyAllowed.indexOf(effectAllowed) >= 0)
            dropEffect = "copy";

        return dropEffect;
    }
}

(function() {

    this.dragWait = function() {
        var interval = Date.now() - this.mousedownEvent.time;
        if (interval > this.editor.getDragDelay())
            this.startDrag();
    };

    this.dragWaitEnd = function() {
        var target = this.editor.container;
        target.draggable = false;
        this.startSelect(this.mousedownEvent.getDocumentPosition());
        this.selectEnd();
    };

    this.dragReadyEnd = function(e) {
        this.editor.$resetCursorStyle();
        this.editor.unsetStyle("ace_dragging");
        this.editor.renderer.setCursorStyle("");
        this.dragWaitEnd();
    };

    this.startDrag = function(){
        this.cancelDrag = false;
        var editor = this.editor;
        var target = editor.container;
        target.draggable = true;
        editor.renderer.$cursorLayer.setBlinking(false);
        editor.setStyle("ace_dragging");
        var cursorStyle = useragent.isWin ? "default" : "move";
        editor.renderer.setCursorStyle(cursorStyle);
        this.setState("dragReady");
    };

    this.onMouseDrag = function(e) {
        var target = this.editor.container;
        if (useragent.isIE && this.state == "dragReady") {
            var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
            if (distance > 3)
                target.dragDrop();
        }
        if (this.state === "dragWait") {
            var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
            if (distance > 0) {
                target.draggable = false;
                this.startSelect(this.mousedownEvent.getDocumentPosition());
            }
        }
    };

    this.onMouseDown = function(e) {
        if (!this.$dragEnabled)
            return;
        this.mousedownEvent = e;
        var editor = this.editor;

        var inSelection = e.inSelection();
        var button = e.getButton();
        var clickCount = e.domEvent.detail || 1;
        if (clickCount === 1 && button === 0 && inSelection) {
            if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))
                return;
            this.mousedownEvent.time = Date.now();
            var eventTarget = e.domEvent.target || e.domEvent.srcElement;
            if ("unselectable" in eventTarget)
                eventTarget.unselectable = "on";
            if (editor.getDragDelay()) {
                if (useragent.isWebKit) {
                    this.cancelDrag = true;
                    var mouseTarget = editor.container;
                    mouseTarget.draggable = true;
                }
                this.setState("dragWait");
            } else {
                this.startDrag();
            }
            this.captureMouse(e, this.onMouseDrag.bind(this));
            e.defaultPrevented = true;
        }
    };

}).call(DragdropHandler.prototype);


function calcDistance(ax, ay, bx, by) {
    return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
}

exports.DragdropHandler = DragdropHandler;

});

ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module) {
"use strict";

var MouseEvent = require("./mouse_event").MouseEvent;
var event = require("../lib/event");
var dom = require("../lib/dom");

exports.addTouchListeners = function(el, editor) {
    var mode = "scroll";
    var startX;
    var startY;
    var touchStartT;
    var lastT;
    var longTouchTimer;
    var animationTimer;
    var animationSteps = 0;
    var pos;
    var clickCount = 0;
    var vX = 0;
    var vY = 0;
    var pressed;
    var contextMenu;
    
    function createContextMenu() {
        var clipboard = window.navigator && window.navigator.clipboard;
        var isOpen = false;
        var updateMenu = function() {
            var selected = editor.getCopyText();
            var hasUndo = editor.session.getUndoManager().hasUndo();
            contextMenu.replaceChild(
                dom.buildDom(isOpen ? ["span",
                    !selected && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"],
                    selected && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"],
                    selected && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"],
                    clipboard && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"],
                    hasUndo && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"],
                    ["span", { class: "ace_mobile-button", action: "find" }, "Find"],
                    ["span", { class: "ace_mobile-button", action: "openCommandPallete" }, "Pallete"]
                ] : ["span"]),
                contextMenu.firstChild
            );
        };
        var handleClick = function(e) {
            var action = e.target.getAttribute("action");

            if (action == "more" || !isOpen) {
                isOpen = !isOpen;
                return updateMenu();
            }
            if (action == "paste") {
                clipboard.readText().then(function (text) {
                    editor.execCommand(action, text);
                });
            }
            else if (action) {
                if (action == "cut" || action == "copy") {
                    if (clipboard)
                        clipboard.writeText(editor.getCopyText());
                    else
                        document.execCommand("copy");
                }
                editor.execCommand(action);
            }
            contextMenu.firstChild.style.display = "none";
            isOpen = false;
            if (action != "openCommandPallete")
                editor.focus();
        };
        contextMenu = dom.buildDom(["div",
            {
                class: "ace_mobile-menu",
                ontouchstart: function(e) {
                    mode = "menu";
                    e.stopPropagation();
                    e.preventDefault();
                    editor.textInput.focus();
                },
                ontouchend: function(e) {
                    e.stopPropagation();
                    e.preventDefault();
                    handleClick(e);
                },
                onclick: handleClick
            },
            ["span"],
            ["span", { class: "ace_mobile-button", action: "more" }, "..."]
        ], editor.container);
    }
    function showContextMenu() {
        if (!contextMenu) createContextMenu();
        var cursor = editor.selection.cursor;
        var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);
        var rect = editor.container.getBoundingClientRect();
        contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px";
        contextMenu.style.right = "10px";
        contextMenu.style.display = "";
        contextMenu.firstChild.style.display = "none";
        editor.on("input", hideContextMenu);
    }
    function hideContextMenu(e) {
        if (contextMenu)
            contextMenu.style.display = "none";
        editor.off("input", hideContextMenu);
    }

    function handleLongTap() {
        longTouchTimer = null;
        clearTimeout(longTouchTimer);
        var range = editor.selection.getRange();
        var inSelection = range.contains(pos.row, pos.column);
        if (range.isEmpty() || !inSelection) {
            editor.selection.moveToPosition(pos);
            editor.selection.selectWord();
        }
        mode = "wait";
        showContextMenu();
    }
    function switchToSelectionMode() {
        longTouchTimer = null;
        clearTimeout(longTouchTimer);
        editor.selection.moveToPosition(pos);
        var range = clickCount >= 2
            ? editor.selection.getLineRange(pos.row)
            : editor.session.getBracketRange(pos);
        if (range && !range.isEmpty()) {
            editor.selection.setRange(range);
        } else {
            editor.selection.selectWord();
        }
        mode = "wait";
    }
    event.addListener(el, "contextmenu", function(e) {
        if (!pressed) return;
        var textarea = editor.textInput.getElement();
        textarea.focus();
    });
    event.addListener(el, "touchstart", function (e) {
        var touches = e.touches;
        if (longTouchTimer || touches.length > 1) {
            clearTimeout(longTouchTimer);
            longTouchTimer = null;
            touchStartT = -1;
            mode = "zoom";
            return;
        }
        
        pressed = editor.$mouseHandler.isMousePressed = true;
        var h = editor.renderer.layerConfig.lineHeight;
        var w = editor.renderer.layerConfig.lineHeight;
        var t = e.timeStamp;
        lastT = t;
        var touchObj = touches[0];
        var x = touchObj.clientX;
        var y = touchObj.clientY;
        if (Math.abs(startX - x) + Math.abs(startY - y) > h)
            touchStartT = -1;
        
        startX = e.clientX = x;
        startY = e.clientY = y;
        vX = vY = 0;
        
        var ev = new MouseEvent(e, editor);
        pos = ev.getDocumentPosition();

        if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {
            clickCount++;
            e.preventDefault();
            e.button = 0;
            switchToSelectionMode();
        } else {
            clickCount = 0;
            var cursor = editor.selection.cursor;
            var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;
            
            var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);
            var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);
            var rect = editor.renderer.scroller.getBoundingClientRect();
            var weightedDistance = function(x, y) {
                x = x / w;
                y = y / h - 0.75;
                return x * x + y * y;
            };
            
            if (e.clientX < rect.left) {
                mode = "zoom";
                return;
            }
            
            var diff1 = weightedDistance(
                e.clientX - rect.left - cursorPos.left,
                e.clientY - rect.top - cursorPos.top
            );
            var diff2 = weightedDistance(
                e.clientX - rect.left - anchorPos.left,
                e.clientY - rect.top - anchorPos.top
            );
            if (diff1 < 3.5 && diff2 < 3.5)
                mode = diff1 > diff2 ? "cursor" : "anchor";
                
            if (diff2 < 3.5)
                mode = "anchor";
            else if (diff1 < 3.5)
                mode = "cursor";
            else
                mode = "scroll";
            longTouchTimer = setTimeout(handleLongTap, 450);
        }
        touchStartT = t;
    });

    event.addListener(el, "touchend", function (e) {
        pressed = editor.$mouseHandler.isMousePressed = false;
        if (animationTimer) clearInterval(animationTimer);
        if (mode == "zoom") {
            mode = "";
            animationSteps = 0;
        } else if (longTouchTimer) {
            editor.selection.moveToPosition(pos);
            animationSteps = 0;
            showContextMenu();
        } else if (mode == "scroll") {
            animate();
            e.preventDefault();
            hideContextMenu();
        } else {
            showContextMenu();
        }
        clearTimeout(longTouchTimer);
        longTouchTimer = null;
    });
    event.addListener(el, "touchmove", function (e) {
        if (longTouchTimer) {
            clearTimeout(longTouchTimer);
            longTouchTimer = null;
        }
        var touches = e.touches;
        if (touches.length > 1 || mode == "zoom") return;

        var touchObj = touches[0];

        var wheelX = startX - touchObj.clientX;
        var wheelY = startY - touchObj.clientY;

        if (mode == "wait") {
            if (wheelX * wheelX + wheelY * wheelY > 4)
                mode = "cursor";
            else
                return e.preventDefault();
        }

        startX = touchObj.clientX;
        startY = touchObj.clientY;

        e.clientX = touchObj.clientX;
        e.clientY = touchObj.clientY;

        var t = e.timeStamp;
        var dt = t - lastT;
        lastT = t;
        if (mode == "scroll") {
            var mouseEvent = new MouseEvent(e, editor);
            mouseEvent.speed = 1;
            mouseEvent.wheelX = wheelX;
            mouseEvent.wheelY = wheelY;
            if (10 * Math.abs(wheelX) < Math.abs(wheelY)) wheelX = 0;
            if (10 * Math.abs(wheelY) < Math.abs(wheelX)) wheelY = 0;
            if (dt != 0) {
                vX = wheelX / dt;
                vY = wheelY / dt;
            }
            editor._emit("mousewheel", mouseEvent);
            if (!mouseEvent.propagationStopped) {
                vX = vY = 0;
            }
        }
        else {
            var ev = new MouseEvent(e, editor);
            var pos = ev.getDocumentPosition();
            if (mode == "cursor")
                editor.selection.moveCursorToPosition(pos);
            else if (mode == "anchor")
                editor.selection.setSelectionAnchor(pos.row, pos.column);
            editor.renderer.scrollCursorIntoView(pos);
            e.preventDefault();
        }
    });

    function animate() {
        animationSteps += 60;
        animationTimer = setInterval(function() {
            if (animationSteps-- <= 0) {
                clearInterval(animationTimer);
                animationTimer = null;
            }
            if (Math.abs(vX) < 0.01) vX = 0;
            if (Math.abs(vY) < 0.01) vY = 0;
            if (animationSteps < 20) vX = 0.9 * vX;
            if (animationSteps < 20) vY = 0.9 * vY;
            var oldScrollTop = editor.session.getScrollTop();
            editor.renderer.scrollBy(10 * vX, 10 * vY);
            if (oldScrollTop == editor.session.getScrollTop())
                animationSteps = 0;
        }, 10);
    }
};

});

ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module) {
"use strict";
var dom = require("./dom");

exports.get = function (url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            callback(xhr.responseText);
        }
    };
    xhr.send(null);
};

exports.loadScript = function(path, callback) {
    var head = dom.getDocumentHead();
    var s = document.createElement('script');

    s.src = path;
    head.appendChild(s);

    s.onload = s.onreadystatechange = function(_, isAbort) {
        if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") {
            s = s.onload = s.onreadystatechange = null;
            if (!isAbort)
                callback();
        }
    };
};
exports.qualifyURL = function(url) {
    var a = document.createElement('a');
    a.href = url;
    return a.href;
};

});

ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) {
"use strict";

var EventEmitter = {};
var stopPropagation = function() { this.propagationStopped = true; };
var preventDefault = function() { this.defaultPrevented = true; };

EventEmitter._emit =
EventEmitter._dispatchEvent = function(eventName, e) {
    this._eventRegistry || (this._eventRegistry = {});
    this._defaultHandlers || (this._defaultHandlers = {});

    var listeners = this._eventRegistry[eventName] || [];
    var defaultHandler = this._defaultHandlers[eventName];
    if (!listeners.length && !defaultHandler)
        return;

    if (typeof e != "object" || !e)
        e = {};

    if (!e.type)
        e.type = eventName;
    if (!e.stopPropagation)
        e.stopPropagation = stopPropagation;
    if (!e.preventDefault)
        e.preventDefault = preventDefault;

    listeners = listeners.slice();
    for (var i=0; i<listeners.length; i++) {
        listeners[i](e, this);
        if (e.propagationStopped)
            break;
    }
    
    if (defaultHandler && !e.defaultPrevented)
        return defaultHandler(e, this);
};


EventEmitter._signal = function(eventName, e) {
    var listeners = (this._eventRegistry || {})[eventName];
    if (!listeners)
        return;
    listeners = listeners.slice();
    for (var i=0; i<listeners.length; i++)
        listeners[i](e, this);
};

EventEmitter.once = function(eventName, callback) {
    var _self = this;
    this.addEventListener(eventName, function newCallback() {
        _self.removeEventListener(eventName, newCallback);
        callback.apply(null, arguments);
    });
    if (!callback) {
        return new Promise(function(resolve) {
            callback = resolve;
        });
    }
};


EventEmitter.setDefaultHandler = function(eventName, callback) {
    var handlers = this._defaultHandlers;
    if (!handlers)
        handlers = this._defaultHandlers = {_disabled_: {}};
    
    if (handlers[eventName]) {
        var old = handlers[eventName];
        var disabled = handlers._disabled_[eventName];
        if (!disabled)
            handlers._disabled_[eventName] = disabled = [];
        disabled.push(old);
        var i = disabled.indexOf(callback);
        if (i != -1) 
            disabled.splice(i, 1);
    }
    handlers[eventName] = callback;
};
EventEmitter.removeDefaultHandler = function(eventName, callback) {
    var handlers = this._defaultHandlers;
    if (!handlers)
        return;
    var disabled = handlers._disabled_[eventName];
    
    if (handlers[eventName] == callback) {
        if (disabled)
            this.setDefaultHandler(eventName, disabled.pop());
    } else if (disabled) {
        var i = disabled.indexOf(callback);
        if (i != -1)
            disabled.splice(i, 1);
    }
};

EventEmitter.on =
EventEmitter.addEventListener = function(eventName, callback, capturing) {
    this._eventRegistry = this._eventRegistry || {};

    var listeners = this._eventRegistry[eventName];
    if (!listeners)
        listeners = this._eventRegistry[eventName] = [];

    if (listeners.indexOf(callback) == -1)
        listeners[capturing ? "unshift" : "push"](callback);
    return callback;
};

EventEmitter.off =
EventEmitter.removeListener =
EventEmitter.removeEventListener = function(eventName, callback) {
    this._eventRegistry = this._eventRegistry || {};

    var listeners = this._eventRegistry[eventName];
    if (!listeners)
        return;

    var index = listeners.indexOf(callback);
    if (index !== -1)
        listeners.splice(index, 1);
};

EventEmitter.removeAllListeners = function(eventName) {
    if (this._eventRegistry) this._eventRegistry[eventName] = [];
};

exports.EventEmitter = EventEmitter;

});

ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) {
"no use strict";

var oop = require("./oop");
var EventEmitter = require("./event_emitter").EventEmitter;

var optionsProvider = {
    setOptions: function(optList) {
        Object.keys(optList).forEach(function(key) {
            this.setOption(key, optList[key]);
        }, this);
    },
    getOptions: function(optionNames) {
        var result = {};
        if (!optionNames) {
            var options = this.$options;
            optionNames = Object.keys(options).filter(function(key) {
                return !options[key].hidden;
            });
        } else if (!Array.isArray(optionNames)) {
            result = optionNames;
            optionNames = Object.keys(result);
        }
        optionNames.forEach(function(key) {
            result[key] = this.getOption(key);
        }, this);
        return result;
    },
    setOption: function(name, value) {
        if (this["$" + name] === value)
            return;
        var opt = this.$options[name];
        if (!opt) {
            return warn('misspelled option "' + name + '"');
        }
        if (opt.forwardTo)
            return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);

        if (!opt.handlesSet)
            this["$" + name] = value;
        if (opt && opt.set)
            opt.set.call(this, value);
    },
    getOption: function(name) {
        var opt = this.$options[name];
        if (!opt) {
            return warn('misspelled option "' + name + '"');
        }
        if (opt.forwardTo)
            return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);
        return opt && opt.get ? opt.get.call(this) : this["$" + name];
    }
};

function warn(message) {
    if (typeof console != "undefined" && console.warn)
        console.warn.apply(console, arguments);
}

function reportError(msg, data) {
    var e = new Error(msg);
    e.data = data;
    if (typeof console == "object" && console.error)
        console.error(e);
    setTimeout(function() { throw e; });
}

var AppConfig = function() {
    this.$defaultOptions = {};
};

(function() {
    oop.implement(this, EventEmitter);
    this.defineOptions = function(obj, path, options) {
        if (!obj.$options)
            this.$defaultOptions[path] = obj.$options = {};

        Object.keys(options).forEach(function(key) {
            var opt = options[key];
            if (typeof opt == "string")
                opt = {forwardTo: opt};

            opt.name || (opt.name = key);
            obj.$options[opt.name] = opt;
            if ("initialValue" in opt)
                obj["$" + opt.name] = opt.initialValue;
        });
        oop.implement(obj, optionsProvider);

        return this;
    };

    this.resetOptions = function(obj) {
        Object.keys(obj.$options).forEach(function(key) {
            var opt = obj.$options[key];
            if ("value" in opt)
                obj.setOption(key, opt.value);
        });
    };

    this.setDefaultValue = function(path, name, value) {
        if (!path) {
            for (path in this.$defaultOptions)
                if (this.$defaultOptions[path][name])
                    break;
            if (!this.$defaultOptions[path][name])
                return false;
        }
        var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});
        if (opts[name]) {
            if (opts.forwardTo)
                this.setDefaultValue(opts.forwardTo, name, value);
            else
                opts[name].value = value;
        }
    };

    this.setDefaultValues = function(path, optionHash) {
        Object.keys(optionHash).forEach(function(key) {
            this.setDefaultValue(path, key, optionHash[key]);
        }, this);
    };
    
    this.warn = warn;
    this.reportError = reportError;
    
}).call(AppConfig.prototype);

exports.AppConfig = AppConfig;

});

ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"], function(require, exports, module) {
"no use strict";

var lang = require("./lib/lang");
var oop = require("./lib/oop");
var net = require("./lib/net");
var AppConfig = require("./lib/app_config").AppConfig;

module.exports = exports = new AppConfig();

var global = (function() {
    return this || typeof window != "undefined" && window;
})();

var options = {
    packaged: false,
    workerPath: null,
    modePath: null,
    themePath: null,
    basePath: "",
    suffix: ".js",
    $moduleUrls: {},
    loadWorkerFromBlob: true,
    sharedPopups: false
};

exports.get = function(key) {
    if (!options.hasOwnProperty(key))
        throw new Error("Unknown config key: " + key);

    return options[key];
};

exports.set = function(key, value) {
    if (options.hasOwnProperty(key))
        options[key] = value;
    else if (this.setDefaultValue("", key, value) == false)
        throw new Error("Unknown config key: " + key);
};

exports.all = function() {
    return lang.copyObject(options);
};

exports.$modes = {};
exports.moduleUrl = function(name, component) {
    if (options.$moduleUrls[name])
        return options.$moduleUrls[name];

    var parts = name.split("/");
    component = component || parts[parts.length - 2] || "";
    var sep = component == "snippets" ? "/" : "-";
    var base = parts[parts.length - 1];
    if (component == "worker" && sep == "-") {
        var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g");
        base = base.replace(re, "");
    }

    if ((!base || base == component) && parts.length > 1)
        base = parts[parts.length - 2];
    var path = options[component + "Path"];
    if (path == null) {
        path = options.basePath;
    } else if (sep == "/") {
        component = sep = "";
    }
    if (path && path.slice(-1) != "/")
        path += "/";
    return path + component + sep + base + this.get("suffix");
};

exports.setModuleUrl = function(name, subst) {
    return options.$moduleUrls[name] = subst;
};

exports.$loading = {};
exports.loadModule = function(moduleName, onLoad) {
    var module, moduleType;
    if (Array.isArray(moduleName)) {
        moduleType = moduleName[0];
        moduleName = moduleName[1];
    }

    try {
        module = require(moduleName);
    } catch (e) {}
    if (module && !exports.$loading[moduleName])
        return onLoad && onLoad(module);

    if (!exports.$loading[moduleName])
        exports.$loading[moduleName] = [];

    exports.$loading[moduleName].push(onLoad);

    if (exports.$loading[moduleName].length > 1)
        return;

    var afterLoad = function() {
        require([moduleName], function(module) {
            exports._emit("load.module", {name: moduleName, module: module});
            var listeners = exports.$loading[moduleName];
            exports.$loading[moduleName] = null;
            listeners.forEach(function(onLoad) {
                onLoad && onLoad(module);
            });
        });
    };

    if (!exports.get("packaged"))
        return afterLoad();
    
    net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);
    reportErrorIfPathIsNotConfigured();
};

var reportErrorIfPathIsNotConfigured = function() {
    if (
        !options.basePath && !options.workerPath 
        && !options.modePath && !options.themePath
        && !Object.keys(options.$moduleUrls).length
    ) {
        console.error(
            "Unable to infer path to ace from script src,",
            "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes",
            "or with webpack use ace/webpack-resolver"
        );
        reportErrorIfPathIsNotConfigured = function() {};
    }
};
init(true);function init(packaged) {

    if (!global || !global.document)
        return;
    
    options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged);

    var scriptOptions = {};
    var scriptUrl = "";
    var currentScript = (document.currentScript || document._currentScript ); // native or polyfill
    var currentDocument = currentScript && currentScript.ownerDocument || document;
    
    var scripts = currentDocument.getElementsByTagName("script");
    for (var i=0; i<scripts.length; i++) {
        var script = scripts[i];

        var src = script.src || script.getAttribute("src");
        if (!src)
            continue;

        var attributes = script.attributes;
        for (var j=0, l=attributes.length; j < l; j++) {
            var attr = attributes[j];
            if (attr.name.indexOf("data-ace-") === 0) {
                scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/, ""))] = attr.value;
            }
        }

        var m = src.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);
        if (m)
            scriptUrl = m[1];
    }

    if (scriptUrl) {
        scriptOptions.base = scriptOptions.base || scriptUrl;
        scriptOptions.packaged = true;
    }

    scriptOptions.basePath = scriptOptions.base;
    scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;
    scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;
    scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;
    delete scriptOptions.base;

    for (var key in scriptOptions)
        if (typeof scriptOptions[key] !== "undefined")
            exports.set(key, scriptOptions[key]);
}

exports.init = init;

function deHyphenate(str) {
    return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); });
}

exports.version = "1.4.8";

});

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/mouse/touch_handler","ace/config"], function(require, exports, module) {
"use strict";

var event = require("../lib/event");
var useragent = require("../lib/useragent");
var DefaultHandlers = require("./default_handlers").DefaultHandlers;
var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler;
var MouseEvent = require("./mouse_event").MouseEvent;
var DragdropHandler = require("./dragdrop_handler").DragdropHandler;
var addTouchListeners = require("./touch_handler").addTouchListeners;
var config = require("../config");

var MouseHandler = function(editor) {
    var _self = this;
    this.editor = editor;

    new DefaultHandlers(this);
    new DefaultGutterHandler(this);
    new DragdropHandler(this);

    var focusEditor = function(e) {
        var windowBlurred = !document.hasFocus || !document.hasFocus()
            || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());
        if (windowBlurred)
            window.focus();
        editor.focus();
    };

    var mouseTarget = editor.renderer.getMouseEventTarget();
    event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"));
    event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"));
    event.addMultiMouseDownListener([
        mouseTarget,
        editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,
        editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,
        editor.textInput && editor.textInput.getElement()
    ].filter(Boolean), [400, 300, 250], this, "onMouseEvent");
    event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"));
    addTouchListeners(editor.container, editor);

    var gutterEl = editor.renderer.$gutter;
    event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"));
    event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"));
    event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"));
    event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"));

    event.addListener(mouseTarget, "mousedown", focusEditor);
    event.addListener(gutterEl, "mousedown", focusEditor);
    if (useragent.isIE && editor.renderer.scrollBarV) {
        event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor);
        event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor);
    }

    editor.on("mousemove", function(e){
        if (_self.state || _self.$dragDelay || !_self.$dragEnabled)
            return;

        var character = editor.renderer.screenToTextCoordinates(e.x, e.y);
        var range = editor.session.selection.getRange();
        var renderer = editor.renderer;

        if (!range.isEmpty() && range.insideStart(character.row, character.column)) {
            renderer.setCursorStyle("default");
        } else {
            renderer.setCursorStyle("");
        }
    });
};

(function() {
    this.onMouseEvent = function(name, e) {
        this.editor._emit(name, new MouseEvent(e, this.editor));
    };

    this.onMouseMove = function(name, e) {
        var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;
        if (!listeners || !listeners.length)
            return;

        this.editor._emit(name, new MouseEvent(e, this.editor));
    };

    this.onMouseWheel = function(name, e) {
        var mouseEvent = new MouseEvent(e, this.editor);
        mouseEvent.speed = this.$scrollSpeed * 2;
        mouseEvent.wheelX = e.wheelX;
        mouseEvent.wheelY = e.wheelY;

        this.editor._emit(name, mouseEvent);
    };
    
    this.setState = function(state) {
        this.state = state;
    };

    this.captureMouse = function(ev, mouseMoveHandler) {
        this.x = ev.x;
        this.y = ev.y;

        this.isMousePressed = true;
        var editor = this.editor;
        var renderer = this.editor.renderer;
        renderer.$isMousePressed = true;

        var self = this;
        var onMouseMove = function(e) {
            if (!e) return;
            if (useragent.isWebKit && !e.which && self.releaseMouse)
                return self.releaseMouse();

            self.x = e.clientX;
            self.y = e.clientY;
            mouseMoveHandler && mouseMoveHandler(e);
            self.mouseEvent = new MouseEvent(e, self.editor);
            self.$mouseMoved = true;
        };

        var onCaptureEnd = function(e) {
            editor.off("beforeEndOperation", onOperationEnd);
            clearInterval(timerId);
            onCaptureInterval();
            self[self.state + "End"] && self[self.state + "End"](e);
            self.state = "";
            self.isMousePressed = renderer.$isMousePressed = false;
            if (renderer.$keepTextAreaAtCursor)
                renderer.$moveTextAreaToCursor();
            self.$onCaptureMouseMove = self.releaseMouse = null;
            e && self.onMouseEvent("mouseup", e);
            editor.endOperation();
        };

        var onCaptureInterval = function() {
            self[self.state] && self[self.state]();
            self.$mouseMoved = false;
        };

        if (useragent.isOldIE && ev.domEvent.type == "dblclick") {
            return setTimeout(function() {onCaptureEnd(ev);});
        }

        var onOperationEnd = function(e) {
            if (!self.releaseMouse) return;
            if (editor.curOp.command.name && editor.curOp.selectionChanged) {
                self[self.state + "End"] && self[self.state + "End"]();
                self.state = "";
                self.releaseMouse();
            }
        };

        editor.on("beforeEndOperation", onOperationEnd);
        editor.startOperation({command: {name: "mouse"}});

        self.$onCaptureMouseMove = onMouseMove;
        self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);
        var timerId = setInterval(onCaptureInterval, 20);
    };
    this.releaseMouse = null;
    this.cancelContextMenu = function() {
        var stop = function(e) {
            if (e && e.domEvent && e.domEvent.type != "contextmenu")
                return;
            this.editor.off("nativecontextmenu", stop);
            if (e && e.domEvent)
                event.stopEvent(e.domEvent);
        }.bind(this);
        setTimeout(stop, 10);
        this.editor.on("nativecontextmenu", stop);
    };
}).call(MouseHandler.prototype);

config.defineOptions(MouseHandler.prototype, "mouseHandler", {
    scrollSpeed: {initialValue: 2},
    dragDelay: {initialValue: (useragent.isMac ? 150 : 0)},
    dragEnabled: {initialValue: true},
    focusTimeout: {initialValue: 0},
    tooltipFollowsMouse: {initialValue: true}
});


exports.MouseHandler = MouseHandler;
});

ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module) {
"use strict";
var dom = require("../lib/dom");

function FoldHandler(editor) {

    editor.on("click", function(e) {
        var position = e.getDocumentPosition();
        var session = editor.session;
        var fold = session.getFoldAt(position.row, position.column, 1);
        if (fold) {
            if (e.getAccelKey())
                session.removeFold(fold);
            else
                session.expandFold(fold);

            e.stop();
        }
        
        var target = e.domEvent && e.domEvent.target;
        if (target && dom.hasCssClass(target, "ace_inline_button")) {
            if (dom.hasCssClass(target, "ace_toggle_wrap")) {
                session.setOption("wrap", !session.getUseWrapMode());
                editor.renderer.scrollCursorIntoView();
            }
        }
    });

    editor.on("gutterclick", function(e) {
        var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);

        if (gutterRegion == "foldWidgets") {
            var row = e.getDocumentPosition().row;
            var session = editor.session;
            if (session.foldWidgets && session.foldWidgets[row])
                editor.session.onFoldWidgetClick(row, e);
            if (!editor.isFocused())
                editor.focus();
            e.stop();
        }
    });

    editor.on("gutterdblclick", function(e) {
        var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);

        if (gutterRegion == "foldWidgets") {
            var row = e.getDocumentPosition().row;
            var session = editor.session;
            var data = session.getParentFoldRangeData(row, true);
            var range = data.range || data.firstRange;

            if (range) {
                row = range.start.row;
                var fold = session.getFoldAt(row, session.getLine(row).length, 1);

                if (fold) {
                    session.removeFold(fold);
                } else {
                    session.addFold("...", range);
                    editor.renderer.scrollCursorIntoView({row: range.start.row, column: 0});
                }
            }
            e.stop();
        }
    });
}

exports.FoldHandler = FoldHandler;

});

ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module) {
"use strict";

var keyUtil  = require("../lib/keys");
var event = require("../lib/event");

var KeyBinding = function(editor) {
    this.$editor = editor;
    this.$data = {editor: editor};
    this.$handlers = [];
    this.setDefaultHandler(editor.commands);
};

(function() {
    this.setDefaultHandler = function(kb) {
        this.removeKeyboardHandler(this.$defaultHandler);
        this.$defaultHandler = kb;
        this.addKeyboardHandler(kb, 0);
    };

    this.setKeyboardHandler = function(kb) {
        var h = this.$handlers;
        if (h[h.length - 1] == kb)
            return;

        while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)
            this.removeKeyboardHandler(h[h.length - 1]);

        this.addKeyboardHandler(kb, 1);
    };

    this.addKeyboardHandler = function(kb, pos) {
        if (!kb)
            return;
        if (typeof kb == "function" && !kb.handleKeyboard)
            kb.handleKeyboard = kb;
        var i = this.$handlers.indexOf(kb);
        if (i != -1)
            this.$handlers.splice(i, 1);

        if (pos == undefined)
            this.$handlers.push(kb);
        else
            this.$handlers.splice(pos, 0, kb);

        if (i == -1 && kb.attach)
            kb.attach(this.$editor);
    };

    this.removeKeyboardHandler = function(kb) {
        var i = this.$handlers.indexOf(kb);
        if (i == -1)
            return false;
        this.$handlers.splice(i, 1);
        kb.detach && kb.detach(this.$editor);
        return true;
    };

    this.getKeyboardHandler = function() {
        return this.$handlers[this.$handlers.length - 1];
    };
    
    this.getStatusText = function() {
        var data = this.$data;
        var editor = data.editor;
        return this.$handlers.map(function(h) {
            return h.getStatusText && h.getStatusText(editor, data) || "";
        }).filter(Boolean).join(" ");
    };

    this.$callKeyboardHandlers = function(hashId, keyString, keyCode, e) {
        var toExecute;
        var success = false;
        var commands = this.$editor.commands;

        for (var i = this.$handlers.length; i--;) {
            toExecute = this.$handlers[i].handleKeyboard(
                this.$data, hashId, keyString, keyCode, e
            );
            if (!toExecute || !toExecute.command)
                continue;
            if (toExecute.command == "null") {
                success = true;
            } else {
                success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);
            }
            if (success && e && hashId != -1 && 
                toExecute.passEvent != true && toExecute.command.passEvent != true
            ) {
                event.stopEvent(e);
            }
            if (success)
                break;
        }
        
        if (!success && hashId == -1) {
            toExecute = {command: "insertstring"};
            success = commands.exec("insertstring", this.$editor, keyString);
        }
        
        if (success && this.$editor._signal)
            this.$editor._signal("keyboardActivity", toExecute);
        
        return success;
    };

    this.onCommandKey = function(e, hashId, keyCode) {
        var keyString = keyUtil.keyCodeToString(keyCode);
        return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);
    };

    this.onTextInput = function(text) {
        return this.$callKeyboardHandlers(-1, text);
    };

}).call(KeyBinding.prototype);

exports.KeyBinding = KeyBinding;
});

ace.define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module) {
"use strict";

var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641'];
var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a'];
var dir = 0, hiLevel = 0;
var lastArabic = false, hasUBAT_AL = false,  hasUBAT_B = false,  hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;

var impTab_LTR = [	[	0,		3,		0,		1,		0,		0,		0	],	[	0,		3,		0,		1,		2,		2,		0	],	[	0,		3,		0,		0x11,		2,		0,		1	],	[	0,		3,		5,		5,		4,		1,		0	],	[	0,		3,		0x15,		0x15,		4,		0,		1	],	[	0,		3,		5,		5,		4,		2,		0	]
];

var impTab_RTL = [	[	2,		0,		1,		1,		0,		1,		0	],	[	2,		0,		1,		1,		0,		2,		0	],	[	2,		0,		2,		1,		3,		2,		0	],	[	2,		0,		2,		0x21,		3,		1,		1	]
];

var LTR = 0, RTL = 1;

var L = 0;
var R = 1;
var EN = 2;
var AN = 3;
var ON = 4;
var B = 5;
var S = 6;
var AL = 7;
var WS = 8;
var CS = 9;
var ES = 10;
var ET = 11;
var NSM = 12;
var LRE = 13;
var RLE = 14;
var PDF = 15;
var LRO = 16;
var RLO = 17;
var BN = 18;

var UnicodeTBL00 = [
BN,BN,BN,BN,BN,BN,BN,BN,BN,S,B,S,WS,B,BN,BN,
BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,B,B,B,S,
WS,ON,ON,ET,ET,ET,ON,ON,ON,ON,ON,ES,CS,ES,CS,CS,
EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,CS,ON,ON,ON,ON,ON,
ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,
L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,
ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,
L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,BN,
BN,BN,BN,BN,BN,B,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,
BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,
CS,ON,ET,ET,ET,ET,ON,ON,ON,ON,L,ON,ON,BN,ON,ON,
ET,ET,EN,EN,ON,L,ON,ON,ON,EN,L,ON,ON,ON,ON,ON
];

var UnicodeTBL20 = [
WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,BN,BN,BN,L,R	,
ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,
ON,ON,ON,ON,ON,ON,ON,ON,WS,B,LRE,RLE,PDF,LRO,RLO,CS,
ET,ET,ET,ET,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,
ON,ON,ON,ON,CS,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,
ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,WS
];

function _computeLevels(chars, levels, len, charTypes) {
	var impTab = dir ? impTab_RTL : impTab_LTR
		, prevState = null, newClass = null, newLevel = null, newState = 0
		, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];

	if (!charTypes) {
		for (i = 0, charTypes = []; i < len; i++) {
			charTypes[i] = _getCharacterType(chars[i]);
		}
	}
	hiLevel = dir;
	lastArabic = false;
	hasUBAT_AL = false;
	hasUBAT_B = false;
	hasUBAT_S = false;
	for (ix = 0; ix < len; ix++){
		prevState = newState;
		classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);
		newState = impTab[prevState][newClass];
		action = newState & 0xF0;
		newState &= 0x0F;
		levels[ix] = newLevel = impTab[newState][5];
		if (action > 0){
			if (action == 0x10){
				for(i = condPos; i < ix; i++){
					levels[i] = 1;
				}
				condPos = -1;
			} else {
				condPos = -1;
			}
		}
		cond = impTab[newState][6];
		if (cond){
			if(condPos == -1){
				condPos = ix;
			}
		}else{
			if (condPos > -1){
				for(i = condPos; i < ix; i++){
					levels[i] = newLevel;
				}
				condPos = -1;
			}
		}
		if (charTypes[ix] == B){
			levels[ix] = 0;
		}
		hiLevel |= newLevel;
	}
	if (hasUBAT_S){
		for(i = 0; i < len; i++){
			if(charTypes[i] == S){
				levels[i] = dir;
				for(var j = i - 1; j >= 0; j--){
					if(charTypes[j] == WS){
						levels[j] = dir;
					}else{
						break;
					}
				}
			}
		}
	}
}

function _invertLevel(lev, levels, _array) {
	if (hiLevel < lev){
		return;
	}
	if (lev == 1 && dir == RTL && !hasUBAT_B){
		_array.reverse();
		return;
	}
	var len = _array.length, start = 0, end, lo, hi, tmp;
	while(start < len){
		if (levels[start] >= lev){
			end = start + 1;
		while(end < len && levels[end] >= lev){
			end++;
		}
		for(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){
			tmp = _array[lo];
			_array[lo] = _array[hi];
			_array[hi] = tmp;
		}
		start = end;
	}
	start++;
	}
}

function _getCharClass(chars, types, classes, ix) {			
	var cType = types[ix], wType, nType, len, i;
	switch(cType){
		case L:
		case R:
			lastArabic = false;
		case ON:
		case AN:
			return cType;
		case EN:
			return lastArabic ? AN : EN;
		case AL:
			lastArabic = true;
			hasUBAT_AL = true;
			return R;
		case WS:
			return ON;
		case CS:
			if (ix < 1 || (ix + 1) >= types.length ||
				((wType = classes[ix - 1]) != EN && wType != AN) ||
				((nType = types[ix + 1]) != EN && nType != AN)){
				return ON;
			}
			if (lastArabic){nType = AN;}
			return nType == wType ? nType : ON;
		case ES:
			wType = ix > 0 ? classes[ix - 1] : B;
			if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){
				return EN;
			}
			return ON;
		case ET:
			if (ix > 0 && classes[ix - 1] == EN){
				return EN;
			}
			if (lastArabic){
				return ON;
			}
			i = ix + 1;
			len = types.length;
			while (i < len && types[i] == ET){
				i++;
			}
			if (i < len && types[i] == EN){
				return EN;
			}
			return ON;
		case NSM:
			len = types.length;
			i = ix + 1;
			while (i < len && types[i] == NSM){
				i++;
			}
			if (i < len){
				var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;
				
				wType = types[i];
				if (rtlCandidate && (wType == R || wType == AL)){
					return R;
				}
			}

			if (ix < 1 || (wType = types[ix - 1]) == B){
				return ON;
			}
			return classes[ix - 1];
		case B:
			lastArabic = false;
			hasUBAT_B = true;
			return dir;
		case S:
			hasUBAT_S = true;
			return ON;
		case LRE:
		case RLE:
		case LRO:
		case RLO:
		case PDF:
			lastArabic = false;
		case BN:
			return ON;
	}
}

function _getCharacterType( ch ) {		
	var uc = ch.charCodeAt(0), hi = uc >> 8;
	
	if (hi == 0) {		
		return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);
	} else if (hi == 5) {
		return (/[\u0591-\u05f4]/.test(ch) ? R : L);
	} else if (hi == 6) {
		if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch))
			return NSM;
		else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch))
			return AN;
		else if (uc == 0x066A)
			return ET;
		else if (/[\u06f0-\u06f9]/.test(ch))
			return EN;			
		else
			return AL;
	} else if (hi == 0x20 && uc <= 0x205F) {
		return UnicodeTBL20[uc & 0xFF];
	} else if (hi == 0xFE) {
		return (uc >= 0xFE70 ? AL : ON);
	}		
	return ON;	
}

function _isArabicDiacritics( ch ) {
	return (ch >= '\u064b' && ch <= '\u0655');
}
exports.L = L;
exports.R = R;
exports.EN = EN;
exports.ON_R = 3;
exports.AN = 4;
exports.R_H = 5;
exports.B = 6;
exports.RLE = 7;

exports.DOT = "\xB7";
exports.doBidiReorder = function(text, textCharTypes, isRtl) {
	if (text.length < 2)
		return {};
		
	var chars = text.split(""), logicalFromVisual = new Array(chars.length),
		bidiLevels = new Array(chars.length), levels = []; 

	dir = isRtl ? RTL : LTR;

	_computeLevels(chars, levels, chars.length, textCharTypes);

	for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);

	_invertLevel(2, levels, logicalFromVisual);
	_invertLevel(1, levels, logicalFromVisual);

	for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width
		if (textCharTypes[i] === AN) {
			levels[i] = exports.AN;
		} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) 
			|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {
			levels[i] = exports.ON_R;
		} else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) {
			levels[i - 1] = levels[i] = exports.R_H;
			i++;
		}
	}
	if (chars[chars.length - 1] === exports.DOT)
		levels[chars.length - 1] = exports.B;
				
	if (chars[0] === '\u202B')
		levels[0] = exports.RLE;
				
	for (var i = 0; i < logicalFromVisual.length; i++) {
		bidiLevels[i] = levels[logicalFromVisual[i]];
	}

	return {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};
};
exports.hasBidiCharacters = function(text, textCharTypes){
	var ret = false;
	for (var i = 0; i < text.length; i++){
		textCharTypes[i] = _getCharacterType(text.charAt(i));
		if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))
			ret = true;
	}
	return ret;
};	
exports.getVisualFromLogicalIdx = function(logIdx, rowMap) {
	for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {
		if (rowMap.logicalFromVisual[i] == logIdx)
			return i;
	}
	return 0;
};

});

ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"], function(require, exports, module) {
"use strict";

var bidiUtil = require("./lib/bidiutil");
var lang = require("./lib/lang");
var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/;
var BidiHandler = function(session) {
    this.session = session;
    this.bidiMap = {};
    this.currentRow = null;
    this.bidiUtil = bidiUtil;
    this.charWidths = [];
    this.EOL = "\xAC";
    this.showInvisibles = true;
    this.isRtlDir = false;
    this.$isRtl = false;
    this.line = "";
    this.wrapIndent = 0;
    this.EOF = "\xB6";
    this.RLE = "\u202B";
    this.contentWidth = 0;
    this.fontMetrics = null;
    this.rtlLineOffset = 0;
    this.wrapOffset = 0;
    this.isMoveLeftOperation = false;
    this.seenBidi = bidiRE.test(session.getValue());
};

(function() {
    this.isBidiRow = function(screenRow, docRow, splitIndex) {
        if (!this.seenBidi)
            return false;
        if (screenRow !== this.currentRow) {
            this.currentRow = screenRow;
            this.updateRowLine(docRow, splitIndex);
            this.updateBidiMap();
        }
        return this.bidiMap.bidiLevels;
    };

    this.onChange = function(delta) {
        if (!this.seenBidi) {
            if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) {
                this.seenBidi = true;
                this.currentRow = null;
            }
        } 
        else {
            this.currentRow = null;
        }
    };

    this.getDocumentRow = function() {
        var docRow = 0;
        var rowCache = this.session.$screenRowCache;
        if (rowCache.length) {
            var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);
            if (index >= 0)
                docRow = this.session.$docRowCache[index];
        }

        return docRow;
    };

    this.getSplitIndex = function() {
        var splitIndex = 0;
        var rowCache = this.session.$screenRowCache;
        if (rowCache.length) {
            var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);
            while (this.currentRow - splitIndex > 0) {
                currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);
                if (currentIndex !== prevIndex)
                    break;

                prevIndex = currentIndex;
                splitIndex++;
            }
        } else {
            splitIndex = this.currentRow;
        }

        return splitIndex;
    };

    this.updateRowLine = function(docRow, splitIndex) {
        if (docRow === undefined)
            docRow = this.getDocumentRow();
            
        var isLastRow = (docRow === this.session.getLength() - 1),
            endOfLine = isLastRow ? this.EOF : this.EOL;

        this.wrapIndent = 0;
        this.line = this.session.getLine(docRow);
        this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;
        if (this.session.$useWrapMode) {
            var splits = this.session.$wrapData[docRow];
            if (splits) {
                if (splitIndex === undefined)
                    splitIndex = this.getSplitIndex();

                if(splitIndex > 0 && splits.length) {
                    this.wrapIndent = splits.indent;
                    this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];
                    this.line = (splitIndex < splits.length) ?
                        this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :
                            this.line.substring(splits[splits.length - 1]);
                } else {
                    this.line = this.line.substring(0, splits[splitIndex]);
                }
            }
            if (splitIndex == splits.length)
                this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;
        } else {
            this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;
        }
        var session = this.session, shift = 0, size;
        this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function(ch, i){
            if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) {
                size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2;
                shift += size - 1;
                return lang.stringRepeat(bidiUtil.DOT, size);
            }
            return ch;
        });

        if (this.isRtlDir) {
            this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;
            this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;
        }
    };
    
    this.updateBidiMap = function() {
        var textCharTypes = [];
        if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {
             this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);
        } else {
            this.bidiMap = {};
        }
    };
    this.markAsDirty = function() {
        this.currentRow = null;
    };
    this.updateCharacterWidths = function(fontMetrics) {
        if (this.characterWidth === fontMetrics.$characterSize.width)
            return;

        this.fontMetrics = fontMetrics;
        var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;
        var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4");

        this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;
        this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;
        this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;
        this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;

        this.currentRow = null;
    };

    this.setShowInvisibles = function(showInvisibles) {
        this.showInvisibles = showInvisibles;
        this.currentRow = null;
    };

    this.setEolChar = function(eolChar) {
        this.EOL = eolChar; 
    };

    this.setContentWidth = function(width) {
        this.contentWidth = width;
    };

    this.isRtlLine = function(row) {
        if (this.$isRtl) return true;
        if (row != undefined)
            return (this.session.getLine(row).charAt(0) == this.RLE);
        else
            return this.isRtlDir; 
    };

    this.setRtlDirection = function(editor, isRtlDir) {
        var cursor = editor.getCursorPosition(); 
        for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {
            if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)
                editor.session.doc.removeInLine(row, 0, 1);
            else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)
                editor.session.doc.insert({column: 0, row: row}, editor.session.$bidiHandler.RLE);
        }
    };
    this.getPosLeft = function(col) {
        col -= this.wrapIndent;
        var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;
        var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;
        var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap),
            levels = this.bidiMap.bidiLevels, left = 0;

        if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)
            visualIdx++;
            
        for (var i = 0; i < visualIdx; i++) {
            left += this.charWidths[levels[i]];
        }

        if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))
            left += this.charWidths[levels[visualIdx]];

        if (this.wrapIndent)
            left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;

        if (this.isRtlDir)
            left += this.rtlLineOffset;

        return left;
    };
    this.getSelections = function(startCol, endCol) {
        var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0,
            selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,
                isSelected = false, isSelectedPrev = false, selectionStart = 0;
            
        if (this.wrapIndent)
            offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;

        for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {
            logIdx = map.logicalFromVisual[visIdx];
            level = levels[visIdx];
            isSelected = (logIdx >= selColMin) && (logIdx < selColMax);
            if (isSelected && !isSelectedPrev) {
                selectionStart = offset;
            } else if (!isSelected && isSelectedPrev) {
                selections.push({left: selectionStart, width: offset - selectionStart});
            }
            offset += this.charWidths[level];
            isSelectedPrev = isSelected;
        }

        if (isSelected && (visIdx === levels.length)) {
            selections.push({left: selectionStart, width: offset - selectionStart});
        }

        if(this.isRtlDir) {
            for (var i = 0; i < selections.length; i++) {
                selections[i].left += this.rtlLineOffset;
            }
        }
        return selections;
    };
    this.offsetToCol = function(posX) {
        if(this.isRtlDir)
            posX -= this.rtlLineOffset;

        var logicalIdx = 0, posX = Math.max(posX, 0),
            offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,
                charWidth = this.charWidths[levels[visualIdx]];

        if (this.wrapIndent)
           posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;
    
        while(posX > offset + charWidth/2) {
            offset += charWidth;
            if(visualIdx === levels.length - 1) {
                charWidth = 0;
                break;
            }
            charWidth = this.charWidths[levels[++visualIdx]];
        }
    
        if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){
            if(posX < offset)
                visualIdx--;
            logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];

        } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){
            logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]
                    : this.bidiMap.logicalFromVisual[visualIdx - 1]);

        } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))
                || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){
            logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];
        } else {
            if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)
                visualIdx--;
            logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];
        }

        if (logicalIdx === 0 && this.isRtlDir)
            logicalIdx++;

        return (logicalIdx + this.wrapIndent);
    };

}).call(BidiHandler.prototype);

exports.BidiHandler = BidiHandler;
});

ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module) {
"use strict";

var oop = require("./lib/oop");
var lang = require("./lib/lang");
var EventEmitter = require("./lib/event_emitter").EventEmitter;
var Range = require("./range").Range;
var Selection = function(session) {
    this.session = session;
    this.doc = session.getDocument();

    this.clearSelection();
    this.cursor = this.lead = this.doc.createAnchor(0, 0);
    this.anchor = this.doc.createAnchor(0, 0);
    this.$silent = false;

    var self = this;
    this.cursor.on("change", function(e) {
        self.$cursorChanged = true;
        if (!self.$silent)
            self._emit("changeCursor");
        if (!self.$isEmpty && !self.$silent)
            self._emit("changeSelection");
        if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)
            self.$desiredColumn = null;
    });

    this.anchor.on("change", function() {
        self.$anchorChanged = true;
        if (!self.$isEmpty && !self.$silent)
            self._emit("changeSelection");
    });
};

(function() {

    oop.implement(this, EventEmitter);
    this.isEmpty = function() {
        return this.$isEmpty || (
            this.anchor.row == this.lead.row &&
            this.anchor.column == this.lead.column
        );
    };
    this.isMultiLine = function() {
        return !this.$isEmpty && this.anchor.row != this.cursor.row;
    };
    this.getCursor = function() {
        return this.lead.getPosition();
    };
    this.setSelectionAnchor = function(row, column) {
        this.$isEmpty = false;
        this.anchor.setPosition(row, column);
    };
    this.getAnchor = 
    this.getSelectionAnchor = function() {
        if (this.$isEmpty)
            return this.getSelectionLead();
        
        return this.anchor.getPosition();
    };
    this.getSelectionLead = function() {
        return this.lead.getPosition();
    };
    this.isBackwards = function() {
        var anchor = this.anchor;
        var lead = this.lead;
        return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));
    };
    this.getRange = function() {
        var anchor = this.anchor;
        var lead = this.lead;

        if (this.$isEmpty)
            return Range.fromPoints(lead, lead);

        return this.isBackwards()
            ? Range.fromPoints(lead, anchor)
            : Range.fromPoints(anchor, lead);
    };
    this.clearSelection = function() {
        if (!this.$isEmpty) {
            this.$isEmpty = true;
            this._emit("changeSelection");
        }
    };
    this.selectAll = function() {
        this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);
    };
    this.setRange =
    this.setSelectionRange = function(range, reverse) {
        var start = reverse ? range.end : range.start;
        var end = reverse ? range.start : range.end;
        this.$setSelection(start.row, start.column, end.row, end.column);
    };

    this.$setSelection = function(anchorRow, anchorColumn, cursorRow, cursorColumn) {
        if (this.$silent)
            return;
        var wasEmpty = this.$isEmpty;
        var wasMultiselect = this.inMultiSelectMode;
        this.$silent = true;
        this.$cursorChanged = this.$anchorChanged = false;
        this.anchor.setPosition(anchorRow, anchorColumn);
        this.cursor.setPosition(cursorRow, cursorColumn);
        this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);
        this.$silent = false;
        if (this.$cursorChanged)
            this._emit("changeCursor");
        if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)
            this._emit("changeSelection");
    };

    this.$moveSelection = function(mover) {
        var lead = this.lead;
        if (this.$isEmpty)
            this.setSelectionAnchor(lead.row, lead.column);

        mover.call(this);
    };
    this.selectTo = function(row, column) {
        this.$moveSelection(function() {
            this.moveCursorTo(row, column);
        });
    };
    this.selectToPosition = function(pos) {
        this.$moveSelection(function() {
            this.moveCursorToPosition(pos);
        });
    };
    this.moveTo = function(row, column) {
        this.clearSelection();
        this.moveCursorTo(row, column);
    };
    this.moveToPosition = function(pos) {
        this.clearSelection();
        this.moveCursorToPosition(pos);
    };
    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(row, column) {
        if (typeof column == "undefined") {
            var cursor = row || this.lead;
            row = cursor.row;
            column = cursor.column;
        }
        return this.session.getWordRange(row, column);
    };
    this.selectWord = function() {
        this.setSelectionRange(this.getWordRange());
    };
    this.selectAWord = function() {
        var cursor = this.getCursor();
        var range = this.session.getAWordRange(cursor.row, cursor.column);
        this.setSelectionRange(range);
    };

    this.getLineRange = function(row, excludeLastChar) {
        var rowStart = typeof row == "number" ? row : this.lead.row;
        var rowEnd;

        var foldLine = this.session.getFoldLine(rowStart);
        if (foldLine) {
            rowStart = foldLine.start.row;
            rowEnd = foldLine.end.row;
        } else {
            rowEnd = rowStart;
        }
        if (excludeLastChar === true)
            return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);
        else
            return new Range(rowStart, 0, rowEnd + 1, 0);
    };
    this.selectLine = function() {
        this.setSelectionRange(this.getLineRange());
    };
    this.moveCursorUp = function() {
        this.moveCursorBy(-1, 0);
    };
    this.moveCursorDown = function() {
        this.moveCursorBy(1, 0);
    };
    this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {
        var start = cursor.column;
        var end = cursor.column + tabSize;

        if (direction < 0) {
            start = cursor.column - tabSize;
            end = cursor.column;
        }
        return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length-1 == tabSize;
    };
    this.moveCursorLeft = function() {
        var cursor = this.lead.getPosition(),
            fold;

        if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {
            this.moveCursorTo(fold.start.row, fold.start.column);
        } else if (cursor.column === 0) {
            if (cursor.row > 0) {
                this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);
            }
        }
        else {
            var tabSize = this.session.getTabSize();
            if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {
                this.moveCursorBy(0, -tabSize);
            } else {
                this.moveCursorBy(0, -1);
            }
        }
    };
    this.moveCursorRight = function() {
        var cursor = this.lead.getPosition(),
            fold;
        if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {
            this.moveCursorTo(fold.end.row, fold.end.column);
        }
        else if (this.lead.column == this.doc.getLine(this.lead.row).length) {
            if (this.lead.row < this.doc.getLength() - 1) {
                this.moveCursorTo(this.lead.row + 1, 0);
            }
        }
        else {
            var tabSize = this.session.getTabSize();
            var cursor = this.lead;
            if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {
                this.moveCursorBy(0, tabSize);
            } else {
                this.moveCursorBy(0, 1);
            }
        }
    };
    this.moveCursorLineStart = function() {
        var row = this.lead.row;
        var column = this.lead.column;
        var screenRow = this.session.documentToScreenRow(row, column);
        var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);
        var beforeCursor = this.session.getDisplayLine(
            row, null, firstColumnPosition.row,
            firstColumnPosition.column
        );

        var leadingSpace = beforeCursor.match(/^\s*/);
        if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)
            firstColumnPosition.column += leadingSpace[0].length;
        this.moveCursorToPosition(firstColumnPosition);
    };
    this.moveCursorLineEnd = function() {
        var lead = this.lead;
        var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);
        if (this.lead.column == lineEnd.column) {
            var line = this.session.getLine(lineEnd.row);
            if (lineEnd.column == line.length) {
                var textEnd = line.search(/\s+$/);
                if (textEnd > 0)
                    lineEnd.column = textEnd;
            }
        }

        this.moveCursorTo(lineEnd.row, lineEnd.column);
    };
    this.moveCursorFileEnd = function() {
        var row = this.doc.getLength() - 1;
        var column = this.doc.getLine(row).length;
        this.moveCursorTo(row, column);
    };
    this.moveCursorFileStart = function() {
        this.moveCursorTo(0, 0);
    };
    this.moveCursorLongWordRight = function() {
        var row = this.lead.row;
        var column = this.lead.column;
        var line = this.doc.getLine(row);
        var rightOfCursor = line.substring(column);

        this.session.nonTokenRe.lastIndex = 0;
        this.session.tokenRe.lastIndex = 0;
        var fold = this.session.getFoldAt(row, column, 1);
        if (fold) {
            this.moveCursorTo(fold.end.row, fold.end.column);
            return;
        }
        if (this.session.nonTokenRe.exec(rightOfCursor)) {
            column += this.session.nonTokenRe.lastIndex;
            this.session.nonTokenRe.lastIndex = 0;
            rightOfCursor = line.substring(column);
        }
        if (column >= line.length) {
            this.moveCursorTo(row, line.length);
            this.moveCursorRight();
            if (row < this.doc.getLength() - 1)
                this.moveCursorWordRight();
            return;
        }
        if (this.session.tokenRe.exec(rightOfCursor)) {
            column += this.session.tokenRe.lastIndex;
            this.session.tokenRe.lastIndex = 0;
        }

        this.moveCursorTo(row, column);
    };
    this.moveCursorLongWordLeft = function() {
        var row = this.lead.row;
        var column = this.lead.column;
        var fold;
        if (fold = this.session.getFoldAt(row, column, -1)) {
            this.moveCursorTo(fold.start.row, fold.start.column);
            return;
        }

        var str = this.session.getFoldStringAt(row, column, -1);
        if (str == null) {
            str = this.doc.getLine(row).substring(0, column);
        }

        var leftOfCursor = lang.stringReverse(str);
        this.session.nonTokenRe.lastIndex = 0;
        this.session.tokenRe.lastIndex = 0;
        if (this.session.nonTokenRe.exec(leftOfCursor)) {
            column -= this.session.nonTokenRe.lastIndex;
            leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);
            this.session.nonTokenRe.lastIndex = 0;
        }
        if (column <= 0) {
            this.moveCursorTo(row, 0);
            this.moveCursorLeft();
            if (row > 0)
                this.moveCursorWordLeft();
            return;
        }
        if (this.session.tokenRe.exec(leftOfCursor)) {
            column -= this.session.tokenRe.lastIndex;
            this.session.tokenRe.lastIndex = 0;
        }

        this.moveCursorTo(row, column);
    };

    this.$shortWordEndIndex = function(rightOfCursor) {
        var index = 0, ch;
        var whitespaceRe = /\s/;
        var tokenRe = this.session.tokenRe;

        tokenRe.lastIndex = 0;
        if (this.session.tokenRe.exec(rightOfCursor)) {
            index = this.session.tokenRe.lastIndex;
        } else {
            while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))
                index ++;

            if (index < 1) {
                tokenRe.lastIndex = 0;
                 while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {
                    tokenRe.lastIndex = 0;
                    index ++;
                    if (whitespaceRe.test(ch)) {
                        if (index > 2) {
                            index--;
                            break;
                        } else {
                            while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))
                                index ++;
                            if (index > 2)
                                break;
                        }
                    }
                }
            }
        }
        tokenRe.lastIndex = 0;

        return index;
    };

    this.moveCursorShortWordRight = function() {
        var row = this.lead.row;
        var column = this.lead.column;
        var line = this.doc.getLine(row);
        var rightOfCursor = line.substring(column);

        var fold = this.session.getFoldAt(row, column, 1);
        if (fold)
            return this.moveCursorTo(fold.end.row, fold.end.column);

        if (column == line.length) {
            var l = this.doc.getLength();
            do {
                row++;
                rightOfCursor = this.doc.getLine(row);
            } while (row < l && /^\s*$/.test(rightOfCursor));

            if (!/^\s+/.test(rightOfCursor))
                rightOfCursor = "";
            column = 0;
        }

        var index = this.$shortWordEndIndex(rightOfCursor);

        this.moveCursorTo(row, column + index);
    };

    this.moveCursorShortWordLeft = function() {
        var row = this.lead.row;
        var column = this.lead.column;

        var fold;
        if (fold = this.session.getFoldAt(row, column, -1))
            return this.moveCursorTo(fold.start.row, fold.start.column);

        var line = this.session.getLine(row).substring(0, column);
        if (column === 0) {
            do {
                row--;
                line = this.doc.getLine(row);
            } while (row > 0 && /^\s*$/.test(line));

            column = line.length;
            if (!/\s+$/.test(line))
                line = "";
        }

        var leftOfCursor = lang.stringReverse(line);
        var index = this.$shortWordEndIndex(leftOfCursor);

        return this.moveCursorTo(row, column - index);
    };

    this.moveCursorWordRight = function() {
        if (this.session.$selectLongWords)
            this.moveCursorLongWordRight();
        else
            this.moveCursorShortWordRight();
    };

    this.moveCursorWordLeft = function() {
        if (this.session.$selectLongWords)
            this.moveCursorLongWordLeft();
        else
            this.moveCursorShortWordLeft();
    };
    this.moveCursorBy = function(rows, chars) {
        var screenPos = this.session.documentToScreenPosition(
            this.lead.row,
            this.lead.column
        );

        var offsetX;

        if (chars === 0) {
            if (rows !== 0) {
                if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {
                    offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);
                    screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);
                } else {
                    offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];
                }
            }

            if (this.$desiredColumn)
                screenPos.column = this.$desiredColumn;
            else
                this.$desiredColumn = screenPos.column;
        }
        
        if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {
            var widget = this.session.lineWidgets[this.lead.row];
            if (rows < 0)
                rows -= widget.rowsAbove || 0;
            else if (rows > 0)
                rows += widget.rowCount - (widget.rowsAbove || 0);
        }
        
        var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);
        
        if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {
            
        }
        this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);
    };
    this.moveCursorToPosition = function(position) {
        this.moveCursorTo(position.row, position.column);
    };
    this.moveCursorTo = function(row, column, keepDesiredColumn) {
        var fold = this.session.getFoldAt(row, column, 1);
        if (fold) {
            row = fold.start.row;
            column = fold.start.column;
        }

        this.$keepDesiredColumnOnChange = true;
        var line = this.session.getLine(row);
        if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {
            if (this.lead.row == row && this.lead.column == column + 1)
                column = column - 1;
            else
                column = column + 1;
        }
        this.lead.setPosition(row, column);
        this.$keepDesiredColumnOnChange = false;

        if (!keepDesiredColumn)
            this.$desiredColumn = null;
    };
    this.moveCursorToScreen = function(row, column, keepDesiredColumn) {
        var pos = this.session.screenToDocumentPosition(row, column);
        this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);
    };
    this.detach = function() {
        this.lead.detach();
        this.anchor.detach();
        this.session = this.doc = null;
    };

    this.fromOrientedRange = function(range) {
        this.setSelectionRange(range, range.cursor == range.start);
        this.$desiredColumn = range.desiredColumn || this.$desiredColumn;
    };

    this.toOrientedRange = function(range) {
        var r = this.getRange();
        if (range) {
            range.start.column = r.start.column;
            range.start.row = r.start.row;
            range.end.column = r.end.column;
            range.end.row = r.end.row;
        } else {
            range = r;
        }

        range.cursor = this.isBackwards() ? range.start : range.end;
        range.desiredColumn = this.$desi
Download .txt
gitextract_c0cy390y/

├── LICENSE
├── README.md
├── ace/
│   ├── ace.js
│   ├── mode-abap.js
│   ├── mode-abc.js
│   ├── mode-actionscript.js
│   ├── mode-ada.js
│   ├── mode-apache_conf.js
│   ├── mode-apex.js
│   ├── mode-applescript.js
│   ├── mode-aql.js
│   ├── mode-asciidoc.js
│   ├── mode-asl.js
│   ├── mode-assembly_x86.js
│   ├── mode-autohotkey.js
│   ├── mode-batchfile.js
│   ├── mode-bro.js
│   ├── mode-c9search.js
│   ├── mode-c_cpp.js
│   ├── mode-cirru.js
│   ├── mode-clojure.js
│   ├── mode-cobol.js
│   ├── mode-coffee.js
│   ├── mode-coldfusion.js
│   ├── mode-crystal.js
│   ├── mode-csharp.js
│   ├── mode-csound_document.js
│   ├── mode-csound_orchestra.js
│   ├── mode-csound_score.js
│   ├── mode-csp.js
│   ├── mode-css.js
│   ├── mode-curly.js
│   ├── mode-d.js
│   ├── mode-dart.js
│   ├── mode-diff.js
│   ├── mode-django.js
│   ├── mode-dockerfile.js
│   ├── mode-dot.js
│   ├── mode-drools.js
│   ├── mode-edifact.js
│   ├── mode-eiffel.js
│   ├── mode-ejs.js
│   ├── mode-elixir.js
│   ├── mode-elm.js
│   ├── mode-erlang.js
│   ├── mode-forth.js
│   ├── mode-fortran.js
│   ├── mode-fsharp.js
│   ├── mode-fsl.js
│   ├── mode-ftl.js
│   ├── mode-gcode.js
│   ├── mode-gherkin.js
│   ├── mode-gitignore.js
│   ├── mode-glsl.js
│   ├── mode-gobstones.js
│   ├── mode-golang.js
│   ├── mode-graphqlschema.js
│   ├── mode-groovy.js
│   ├── mode-haml.js
│   ├── mode-handlebars.js
│   ├── mode-haskell.js
│   ├── mode-haskell_cabal.js
│   ├── mode-haxe.js
│   ├── mode-hjson.js
│   ├── mode-html.js
│   ├── mode-html_elixir.js
│   ├── mode-html_ruby.js
│   ├── mode-ini.js
│   ├── mode-io.js
│   ├── mode-jack.js
│   ├── mode-jade.js
│   ├── mode-java.js
│   ├── mode-javascript.js
│   ├── mode-json.js
│   ├── mode-json5.js
│   ├── mode-jsoniq.js
│   ├── mode-jsp.js
│   ├── mode-jssm.js
│   ├── mode-jsx.js
│   ├── mode-julia.js
│   ├── mode-kotlin.js
│   ├── mode-latex.js
│   ├── mode-less.js
│   ├── mode-liquid.js
│   ├── mode-lisp.js
│   ├── mode-livescript.js
│   ├── mode-logiql.js
│   ├── mode-logtalk.js
│   ├── mode-lsl.js
│   ├── mode-lua.js
│   ├── mode-luapage.js
│   ├── mode-lucene.js
│   ├── mode-makefile.js
│   ├── mode-markdown.js
│   ├── mode-mask.js
│   ├── mode-matlab.js
│   ├── mode-maze.js
│   ├── mode-mel.js
│   ├── mode-mixal.js
│   ├── mode-mushcode.js
│   ├── mode-mysql.js
│   ├── mode-nginx.js
│   ├── mode-nim.js
│   ├── mode-nix.js
│   ├── mode-nsis.js
│   ├── mode-nunjucks.js
│   ├── mode-objectivec.js
│   ├── mode-ocaml.js
│   ├── mode-pascal.js
│   ├── mode-perl.js
│   ├── mode-perl6.js
│   ├── mode-pgsql.js
│   ├── mode-php.js
│   ├── mode-php_laravel_blade.js
│   ├── mode-pig.js
│   ├── mode-plain_text.js
│   ├── mode-powershell.js
│   ├── mode-praat.js
│   ├── mode-prolog.js
│   ├── mode-properties.js
│   ├── mode-protobuf.js
│   ├── mode-puppet.js
│   ├── mode-python.js
│   ├── mode-r.js
│   ├── mode-razor.js
│   ├── mode-rdoc.js
│   ├── mode-red.js
│   ├── mode-redshift.js
│   ├── mode-rhtml.js
│   ├── mode-rst.js
│   ├── mode-ruby.js
│   ├── mode-rust.js
│   ├── mode-sass.js
│   ├── mode-scad.js
│   ├── mode-scala.js
│   ├── mode-scheme.js
│   ├── mode-scss.js
│   ├── mode-sh.js
│   ├── mode-sjs.js
│   ├── mode-slim.js
│   ├── mode-smarty.js
│   ├── mode-snippets.js
│   ├── mode-soy_template.js
│   ├── mode-space.js
│   ├── mode-sparql.js
│   ├── mode-sql.js
│   ├── mode-sqlserver.js
│   ├── mode-stylus.js
│   ├── mode-svg.js
│   ├── mode-swift.js
│   ├── mode-tcl.js
│   ├── mode-terraform.js
│   ├── mode-tex.js
│   ├── mode-text.js
│   ├── mode-textile.js
│   ├── mode-toml.js
│   ├── mode-tsx.js
│   ├── mode-turtle.js
│   ├── mode-twig.js
│   ├── mode-typescript.js
│   ├── mode-vala.js
│   ├── mode-vbscript.js
│   ├── mode-velocity.js
│   ├── mode-verilog.js
│   ├── mode-vhdl.js
│   ├── mode-visualforce.js
│   ├── mode-wollok.js
│   ├── mode-xml.js
│   ├── mode-xquery.js
│   ├── mode-yaml.js
│   ├── mode-zeek.js
│   ├── theme-ambiance.js
│   ├── theme-chaos.js
│   ├── theme-chrome.js
│   ├── theme-clouds.js
│   ├── theme-cobalt.js
│   ├── theme-dawn.js
│   ├── theme-dracula.js
│   ├── theme-dreamweaver.js
│   ├── theme-eclipse.js
│   ├── theme-github.js
│   ├── theme-gob.js
│   ├── theme-gruvbox.js
│   ├── theme-iplastic.js
│   ├── theme-katzenmilch.js
│   ├── theme-kuroir.js
│   ├── theme-merbivore.js
│   ├── theme-monokai.js
│   ├── theme-sqlserver.js
│   ├── theme-terminal.js
│   ├── theme-textmate.js
│   ├── theme-tomorrow.js
│   ├── theme-twilight.js
│   ├── worker-coffee.js
│   ├── worker-css.js
│   ├── worker-html.js
│   ├── worker-javascript.js
│   ├── worker-json.js
│   ├── worker-lua.js
│   ├── worker-php.js
│   ├── worker-xml.js
│   └── worker-xquery.js
├── index.html
├── main.js
└── package.json
Download .txt
SYMBOL INDEX (2516 symbols across 66 files)

FILE: ace/ace.js
  function exportAce (line 151) | function exportAce(ns) {
  function getNativeFlags (line 229) | function getNativeFlags (regex) {
  function indexOf (line 237) | function indexOf (array, item, from) {
  function Empty (line 251) | function Empty() {}
  function makeArray (line 309) | function makeArray(l) {
  function doesDefinePropertyWork (line 713) | function doesDefinePropertyWork(object) {
  function toInteger (line 895) | function toInteger(n) {
  function isPrimitive (line 905) | function isPrimitive(input) {
  function toPrimitive (line 916) | function toPrimitive(input) {
  function detectListenerOptionsSupport (line 1408) | function detectListenerOptionsSupport() {
  function getListenerOptions (line 1419) | function getListenerOptions() {
  function onMouseUp (line 1456) | function onMouseUp(e) {
  function onMousedown (line 1525) | function onMousedown(e) {
  function normalizeCommandKeys (line 1573) | function normalizeCommandKeys(callback, e, keyCode) {
  function resetPressedKeys (line 1663) | function resetPressedKeys() {
  function cancelComposition (line 2627) | function cancelComposition() {
  function onKeyup (line 2636) | function onKeyup(e) {
  function onContextMenuClose (line 2704) | function onContextMenuClose() {
  function addIosSelectionHandler (line 2732) | function addIosSelectionHandler(parentNode, host, text) {
  function DefaultHandlers (line 2827) | function DefaultHandlers(mouseHandler) {
  function calcDistance (line 3074) | function calcDistance(ax, ay, bx, by) {
  function calcRangeOrientation (line 3078) | function calcRangeOrientation(range, cursor) {
  function Tooltip (line 3099) | function Tooltip (parentNode) {
  function GutterHandler (line 3172) | function GutterHandler(mouseHandler) {
  function GutterTooltip (line 3288) | function GutterTooltip(parentNode) {
  function DragdropHandler (line 3404) | function DragdropHandler(mouseHandler) {
  function calcDistance (line 3763) | function calcDistance(ax, ay, bx, by) {
  function createContextMenu (line 3794) | function createContextMenu() {
  function showContextMenu (line 3859) | function showContextMenu() {
  function hideContextMenu (line 3870) | function hideContextMenu(e) {
  function handleLongTap (line 3876) | function handleLongTap() {
  function switchToSelectionMode (line 3888) | function switchToSelectionMode() {
  function animate (line 4058) | function animate() {
  function warn (line 4301) | function warn(message) {
  function reportError (line 4306) | function reportError(msg, data) {
  function init (line 4508) | function init(packaged) {
  function deHyphenate (line 4559) | function deHyphenate(str) {
  function FoldHandler (line 4753) | function FoldHandler(editor) {
  function _computeLevels (line 5000) | function _computeLevels(chars, levels, len, charTypes) {
  function _invertLevel (line 5066) | function _invertLevel(lev, levels, _array) {
  function _getCharClass (line 5092) | function _getCharClass(chars, types, classes, ix) {
  function _getCharacterType (line 5176) | function _getCharacterType( ch ) {
  function _isArabicDiacritics (line 5202) | function _isArabicDiacritics( ch ) {
  function processState (line 6594) | function processState(key) {
  function iter (line 7364) | function iter(fun) {
  function throwDeltaError (line 7599) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 7604) | function positionInDocument(docLines, position) {
  function validateDelta (line 7609) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 7698) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 7703) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function FoldLine (line 8344) | function FoldLine(foldData, folds) {
  function consumePoint (line 8908) | function consumePoint(point, anchor) {
  function consumeRange (line 8913) | function consumeRange(range, anchor) {
  function restorePoint (line 8917) | function restorePoint(point, anchor) {
  function restoreRange (line 8922) | function restoreRange(range, anchor) {
  function Folding (line 8937) | function Folding() {
  function BracketMatch (line 9681) | function BracketMatch() {
  function isInsert (line 10559) | function isInsert(delta) {
  function getWrapIndent (line 11016) | function getWrapIndent() {
  function addSplit (line 11037) | function addSplit(screenPos) {
  function isFullWidth (line 11464) | function isFullWidth(c) {
  function addWordBoundary (line 11914) | function addWordBoundary(needle, options) {
  function HashHandler (line 11933) | function HashHandler(config, platform) {
  function MultiHashHandler (line 11941) | function MultiHashHandler(config, platform) {
  function getPosition (line 12012) | function getPosition(command) {
  function bindKey (line 12264) | function bindKey(win, mac) {
  function rearrangeUndoStack (line 15404) | function rearrangeUndoStack(stack, pos) {
  function $updateMarkers (line 15423) | function $updateMarkers(delta) {
  function clonePos (line 15465) | function clonePos(pos) {
  function cloneDelta (line 15468) | function cloneDelta(d) {
  function stringifyDelta (line 15476) | function stringifyDelta(d) {
  function stringifyRange (line 15500) | function stringifyRange(r) {
  function swap (line 15505) | function swap(d1, d2) {
  function swapGroups (line 15544) | function swapGroups(ds1, ds2) {
  function xform (line 15563) | function xform(d1, c1) {
  function shift (line 15620) | function shift(d1, d2, dir) {
  function shiftPos (line 15624) | function shiftPos(pos, start, end, dir) {
  function splitDelta (line 15630) | function splitDelta(c, pos) {
  function moveDeltasByOne (line 15649) | function moveDeltasByOne(redoStack, d) {
  function rebaseRedoStack (line 15673) | function rebaseRedoStack(redoStack, deltaSets) {
  function onCreateCell (line 16218) | function onCreateCell(element) {
  function getBorderClass (line 16318) | function getBorderClass(tl, tr, br, bl) {
  function addTokens (line 16994) | function addTokens(tokens, from, to) {
  function solve (line 17637) | function solve(l1, l2, r) {
  function sub (line 17644) | function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
  function add (line 17645) | function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }
  function mul (line 17646) | function mul(a, b) { return [a * b[0], a * b[1]]; }
  function p (line 17651) | function p(el) {
  function afterLoad (line 19362) | function afterLoad(module) {
  function $workerBlob (line 19576) | function $workerBlob(workerUrl) {
  function createWorker (line 19588) | function createWorker(workerUrl) {
  function isSamePoint (line 19972) | function isSamePoint(p1, p2) {
  function onMouseDown (line 19976) | function onMouseDown(e) {
  function find (line 20255) | function find(session, needle, dir) {
  function spaces (line 20907) | function spaces(n) {
  function alignLeft (line 20911) | function alignLeft(m) {
  function alignRight (line 20916) | function alignRight(m) {
  function unAlign (line 20921) | function unAlign(m) {
  function isSamePoint (line 20930) | function isSamePoint(p1, p2) {
  function MultiSelect (line 20968) | function MultiSelect(editor) {
  function addAltCursorListeners (line 20987) | function addAltCursorListeners(editor){
  function LineWidgets (line 21270) | function LineWidgets(session) {
  function binarySearch (line 21633) | function binarySearch(array, needle, comparator) {
  function findAnnotations (line 21650) | function findAnnotations(session, row, dir) {

FILE: ace/mode-abap.js
  function Mode (line 193) | function Mode() {

FILE: ace/mode-apex.js
  function keywordMapper (line 80) | function keywordMapper(value) {
  function string (line 85) | function string(start, options) {
  function comments (line 105) | function comments() {
  function ApexMode (line 431) | function ApexMode() {

FILE: ace/mode-asciidoc.js
  function quoteRule (line 154) | function quoteRule(ch) {
  function getTokenType (line 237) | function getTokenType(row) {
  function getLevel (line 245) | function getLevel() {

FILE: ace/mode-c9search.js
  function safeCreateRegexp (line 8) | function safeCreateRegexp(source, flag) {

FILE: ace/mode-coffee.js
  function CoffeeHighlightRules (line 9) | function CoffeeHighlightRules() {
  function Mode (line 340) | function Mode() {

FILE: ace/mode-coldfusion.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-csound_document.js
  method next (line 248) | get next() { return Array.isArray(params.next) ? params.next[params.next...
  method next (line 249) | set next(next) {
  method token (line 255) | get token() { return params.token; }
  function JSX (line 3518) | function JSX() {
  function comments (line 3618) | function comments(next) {

FILE: ace/mode-csound_orchestra.js
  method next (line 248) | get next() { return Array.isArray(params.next) ? params.next[params.next...
  method next (line 249) | set next(next) {
  method token (line 255) | get token() { return params.token; }

FILE: ace/mode-csound_score.js
  method next (line 248) | get next() { return Array.isArray(params.next) ? params.next[params.next...
  method next (line 249) | set next(next) {
  method token (line 255) | get token() { return params.token; }

FILE: ace/mode-curly.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-django.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-ejs.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-ftl.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {

FILE: ace/mode-gobstones.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-groovy.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-haml.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {

FILE: ace/mode-handlebars.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {
  function pop2 (line 2507) | function pop2(currentState, stack) {

FILE: ace/mode-html.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-html_elixir.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {
  function is (line 2058) | function is(token, type) {
  function is (line 2303) | function is(token, type) {
  function is (line 2752) | function is(token, type) {
  function findTagName (line 2756) | function findTagName(session, pos) {
  function findAttributeName (line 2766) | function findAttributeName(session, pos) {

FILE: ace/mode-html_ruby.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {
  function is (line 1967) | function is(token, type) {
  function is (line 2212) | function is(token, type) {
  function is (line 2661) | function is(token, type) {
  function findTagName (line 2665) | function findTagName(session, pos) {
  function findAttributeName (line 2675) | function findAttributeName(session, pos) {

FILE: ace/mode-jade.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {
  function CoffeeHighlightRules (line 1503) | function CoffeeHighlightRules() {
  function mixin_embed (line 1707) | function mixin_embed(tag, prefix) {

FILE: ace/mode-java.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-javascript.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-jsoniq.js
  function newRequire (line 4) | function newRequire(name, jumped){
  function init (line 52) | function init(string, parsingEventHandler)
  function reset (line 65) | function reset(l, b, e)
  function parse_EQName (line 563) | function parse_EQName()
  function parse_FunctionName (line 622) | function parse_FunctionName()
  function parse_NCName (line 969) | function parse_NCName()
  function shift (line 1364) | function shift(t)
  function whitespace (line 1378) | function whitespace()
  function matchW (line 1388) | function matchW(set)
  function lookahead1W (line 1402) | function lookahead1W(set)
  function lookahead1 (line 1412) | function lookahead1(set)
  function error (line 1422) | function error(b, e, s, l, t)
  function match (line 1436) | function match(tokenSetId)
  function is (line 2096) | function is(token, type) {
  function hasType (line 2269) | function hasType(token, type) {
  function updateFloat (line 2601) | function updateFloat(single) {

FILE: ace/mode-jsp.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {

FILE: ace/mode-jsx.js
  function Mode (line 359) | function Mode() {

FILE: ace/mode-liquid.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {
  function is (line 2510) | function is(token, type) {

FILE: ace/mode-livescript.js
  function LiveScriptMode (line 46) | function LiveScriptMode(){
  function extend$ (line 261) | function extend$(sub, sup){
  function import$ (line 267) | function import$(obj, src){

FILE: ace/mode-lsl.js
  function LSLHighlightRules (line 9) | function LSLHighlightRules() {

FILE: ace/mode-lua.js
  function getNetIndentLevel (line 340) | function getNetIndentLevel(tokens) {

FILE: ace/mode-luapage.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {
  function getNetIndentLevel (line 2840) | function getNetIndentLevel(tokens) {

FILE: ace/mode-markdown.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1003) | function is(token, type) {
  function is (line 1194) | function is(token, type) {
  function is (line 2358) | function is(token, type) {
  function findTagName (line 2362) | function findTagName(session, pos) {
  function findAttributeName (line 2372) | function findAttributeName(session, pos) {
  function isHeading (line 2789) | function isHeading(row) {
  function getLevel (line 2795) | function getLevel() {

FILE: ace/mode-mask.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function MaskHighlightRules (line 1244) | function MaskHighlightRules () {
  function Token (line 1445) | function Token(token, rgx, mix) {

FILE: ace/mode-mysql.js
  function string (line 72) | function string(rule) {

FILE: ace/mode-nunjucks.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-pgsql.js
  function JSX (line 1001) | function JSX() {
  function comments (line 1101) | function comments(next) {

FILE: ace/mode-php.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {
  function is (line 11210) | function is(token, type) {
  function is (line 11885) | function is(token, type) {
  function is (line 12130) | function is(token, type) {
  function is (line 12579) | function is(token, type) {
  function findTagName (line 12583) | function findTagName(session, pos) {
  function findAttributeName (line 12593) | function findAttributeName(session, pos) {

FILE: ace/mode-php_laravel_blade.js
  function JSX (line 596) | function JSX() {
  function comments (line 696) | function comments(next) {
  function is (line 11381) | function is(token, type) {
  function is (line 12056) | function is(token, type) {
  function is (line 12301) | function is(token, type) {
  function is (line 12750) | function is(token, type) {
  function findTagName (line 12754) | function findTagName(session, pos) {
  function findAttributeName (line 12764) | function findAttributeName(session, pos) {

FILE: ace/mode-razor.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-rhtml.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-scala.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-sjs.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-slim.js
  function JSX (line 607) | function JSX() {
  function comments (line 707) | function comments(next) {
  function is (line 1209) | function is(token, type) {
  function is (line 1400) | function is(token, type) {
  function is (line 2564) | function is(token, type) {
  function findTagName (line 2568) | function findTagName(session, pos) {
  function findAttributeName (line 2578) | function findAttributeName(session, pos) {
  function isHeading (line 2995) | function isHeading(row) {
  function getLevel (line 3001) | function getLevel() {
  function CoffeeHighlightRules (line 3398) | function CoffeeHighlightRules() {
  function Mode (line 3689) | function Mode() {

FILE: ace/mode-smarty.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-soy_template.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-svg.js
  function is (line 212) | function is(token, type) {
  function is (line 403) | function is(token, type) {
  function JSX (line 1071) | function JSX() {
  function comments (line 1171) | function comments(next) {

FILE: ace/mode-swift.js
  function string (line 79) | function string(start, options) {
  function comments (line 140) | function comments() {

FILE: ace/mode-tsx.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-twig.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-typescript.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-velocity.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {

FILE: ace/mode-visualforce.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {
  function is (line 1618) | function is(token, type) {
  function is (line 1863) | function is(token, type) {
  function is (line 2312) | function is(token, type) {
  function findTagName (line 2316) | function findTagName(session, pos) {
  function findAttributeName (line 2326) | function findAttributeName(session, pos) {
  function string (line 2507) | function string(options) {
  function VisualforceMode (line 2614) | function VisualforceMode() {

FILE: ace/mode-wollok.js
  function JSX (line 401) | function JSX() {
  function comments (line 501) | function comments(next) {

FILE: ace/mode-xml.js
  function is (line 212) | function is(token, type) {
  function is (line 403) | function is(token, type) {

FILE: ace/mode-xquery.js
  function newRequire (line 4) | function newRequire(name, jumped){
  function init (line 52) | function init(string, parsingEventHandler)
  function reset (line 65) | function reset(l, b, e)
  function parse_EQName (line 563) | function parse_EQName()
  function parse_FunctionName (line 622) | function parse_FunctionName()
  function parse_NCName (line 969) | function parse_NCName()
  function shift (line 1364) | function shift(t)
  function whitespace (line 1378) | function whitespace()
  function matchW (line 1388) | function matchW(set)
  function lookahead1W (line 1402) | function lookahead1W(set)
  function lookahead1 (line 1412) | function lookahead1(set)
  function error (line 1422) | function error(b, e, s, l, t)
  function match (line 1436) | function match(tokenSetId)
  function is (line 2095) | function is(token, type) {
  function hasType (line 2268) | function hasType(token, type) {
  function updateFloat (line 2613) | function updateFloat(single) {

FILE: ace/worker-coffee.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 490) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 495) | function positionInDocument(docLines, position) {
  function validateDelta (line 500) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 719) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 724) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function define (line 1413) | function define(f) { module.exports = f() }
  function e (line 1414) | function e(e,a){var t=[],o=!0,n=!1,r=void 0;try{for(var l=e[Symbol.itera...
  function e (line 1414) | function e(e,a){for(var t=0,o;t<a.length;t++)o=a[t],o.enumerable=o.enume...
  function _toArray (line 1414) | function _toArray(e){return Array.isArray(e)?e:Array.from(e)}
  function _possibleConstructorReturn (line 1414) | function _possibleConstructorReturn(e,a){if(!e)throw new ReferenceError(...
  function _inherits (line 1414) | function _inherits(e,a){if("function"!=typeof a&&null!==a)throw new Type...
  function _classCallCheck (line 1414) | function _classCallCheck(e,a){if(!(e instanceof a))throw new TypeError("...
  function _toConsumableArray (line 1414) | function _toConsumableArray(e){if(Array.isArray(e)){for(var a=0,t=Array(...
  function require (line 1414) | function require(e){return require[e]}
  function e (line 1414) | function e(){_classCallCheck(this,e)}
  function e (line 1414) | function e(){_classCallCheck(this,e)}
  function e (line 1414) | function e(){this.yy={}}
  function e (line 1414) | function e(a,t,o,n){_classCallCheck(this,e);var r,l;this.parent=a,this.e...
  function e (line 1414) | function e(a,t){_classCallCheck(this,e);var o;this.code=""+t,this.type=(...
  function e (line 1414) | function e(){_classCallCheck(this,e)}
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function t (line 1414) | function t(e){_classCallCheck(this,t);var a=_possibleConstructorReturn(t...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function t (line 1414) | function t(e){_classCallCheck(this,t);var a=_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(e,t,o){var n=!!(3<arguments.length&&void 0!==arguments[3])&&a...
  function t (line 1414) | function t(e){var a=e.content,o=e.newLine,n=e.unshift;_classCallCheck(th...
  function a (line 1414) | function a(e){var t=e.content,o=e.newLine,n=e.unshift;_classCallCheck(th...
  function a (line 1414) | function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0...
  function a (line 1414) | function a(e,t,o){return _classCallCheck(this,a),t instanceof ve&&(t=new...
  function a (line 1414) | function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn...
  function a (line 1414) | function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(e,t,o){_classCallCheck(this,a);var n=_possibleConstructorRetu...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&argum...
  function t (line 1414) | function t(e){var a=!!(1<arguments.length&&void 0!==arguments[1])&&argum...
  function o (line 1414) | function o(e,a){var t=2<arguments.length&&void 0!==arguments[2]?argument...
  function a (line 1414) | function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[...
  function a (line 1414) | function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(e,t,o){_classCallCheck(this,a);var n=_possibleConstructorRetu...
  function t (line 1414) | function t(e,a){return _classCallCheck(this,t),_possibleConstructorRetur...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(e,t){return _classCallCheck(this,a),_possibleConstructorRetur...
  function n (line 1414) | function n(e,a,t){var o=3<arguments.length&&void 0!==arguments[3]?argume...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function t (line 1414) | function t(e,a,n,r){_classCallCheck(this,t);var l=_possibleConstructorRe...
  function t (line 1414) | function t(e,a,o){_classCallCheck(this,t);var n=_possibleConstructorRetu...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(){return _classCallCheck(this,a),_possibleConstructorReturn(t...
  function a (line 1414) | function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn...
  function n (line 1414) | function n(e,a,o,r){var l;_classCallCheck(this,n);var s=_possibleConstru...
  function a (line 1414) | function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn...
  function a (line 1414) | function a(e,t,o,n){_classCallCheck(this,a);var r=_possibleConstructorRe...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function t (line 1414) | function t(e){var o=!!(1<arguments.length&&void 0!==arguments[1])&&argum...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(t...
  function a (line 1414) | function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn...
  function a (line 1414) | function a(e,t,o){_classCallCheck(this,a);var n=_possibleConstructorRetu...
  function a (line 1414) | function a(e,t){var o=2<arguments.length&&void 0!==arguments[2]?argument...
  function e (line 1414) | function e(a){_classCallCheck(this,e),this.line=a,this.columns=[]}
  function e (line 1414) | function e(){_classCallCheck(this,e),this.lines=[]}
  function Empty (line 1463) | function Empty() {}
  function makeArray (line 1521) | function makeArray(l) {
  function doesDefinePropertyWork (line 1925) | function doesDefinePropertyWork(object) {
  function toInteger (line 2107) | function toInteger(n) {
  function isPrimitive (line 2117) | function isPrimitive(input) {
  function toPrimitive (line 2128) | function toPrimitive(input) {

FILE: ace/worker-css.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 678) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 683) | function positionInDocument(docLines, position) {
  function validateDelta (line 688) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 907) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 912) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function EventTarget (line 1415) | function EventTarget(){
  function StringReader (line 1461) | function StringReader(text){
  function SyntaxError (line 1574) | function SyntaxError(message, line, col){
  function SyntaxUnit (line 1581) | function SyntaxUnit(text, line, col, type){
  function TokenStreamBase (line 1601) | function TokenStreamBase(input, tokenData){
  function Combinator (line 1985) | function Combinator(text, line, col){
  function MediaFeature (line 2003) | function MediaFeature(name, value){
  function MediaQuery (line 2012) | function MediaQuery(modifier, mediaType, features, line, col){
  function Parser (line 2023) | function Parser(options){
  function PropertyName (line 4098) | function PropertyName(text, hack, line, col){
  function PropertyValue (line 4110) | function PropertyValue(parts, line, col){
  function PropertyValueIterator (line 4119) | function PropertyValueIterator(value){
  function PropertyValuePart (line 4152) | function PropertyValuePart(text, line, col){
  function Selector (line 4304) | function Selector(parts, line, col){
  function SelectorPart (line 4314) | function SelectorPart(elementName, modifiers, text, line, col){
  function SelectorSubPart (line 4324) | function SelectorSubPart(text, type, line, col){
  function Specificity (line 4334) | function Specificity(a, b, c, d){
  function updateValues (line 4371) | function updateValues(part){
  function isHexDigit (line 4425) | function isHexDigit(c){
  function isDigit (line 4429) | function isDigit(c){
  function isWhitespace (line 4433) | function isWhitespace(c){
  function isNewLine (line 4437) | function isNewLine(c){
  function isNameStart (line 4441) | function isNameStart(c){
  function isNameChar (line 4445) | function isNameChar(c){
  function isIdentStart (line 4449) | function isIdentStart(c){
  function mix (line 4453) | function mix(receiver, supplier){
  function TokenStream (line 4461) | function TokenStream(input){
  function ValidationError (line 5357) | function ValidationError(message, line, col){
  function objectToString (line 5774) | function objectToString(o) {
  function clone (line 5800) | function clone(parent, circular, depth, prototype) {
  function applyEmbeddedRuleset (line 5898) | function applyEmbeddedRuleset(text, ruleset){
  function Reporter (line 6002) | function Reporter(lines, ruleset){
  function startRule (line 6163) | function startRule(){
  function endRule (line 6168) | function endRule(){
  function reportProperty (line 6496) | function reportProperty(name, display, msg){
  function startRule (line 6504) | function startRule(){
  function endRule (line 6508) | function endRule(){
  function startRule (line 6609) | function startRule(){
  function startRule (line 6705) | function startRule(){
  function startRule (line 7027) | function startRule(event){
  function endRule (line 7041) | function endRule(){
  function startRule (line 7272) | function startRule(event) {
  function startRule (line 7332) | function startRule(){
  function endRule (line 7335) | function endRule(event){
  function startRule (line 7398) | function startRule(){
  function endRule (line 7402) | function endRule(){
  function startRule (line 7642) | function startRule(){
  function endRule (line 7646) | function endRule(){
  function Empty (line 8080) | function Empty() {}
  function makeArray (line 8138) | function makeArray(l) {
  function doesDefinePropertyWork (line 8542) | function doesDefinePropertyWork(object) {
  function toInteger (line 8724) | function toInteger(n) {
  function isPrimitive (line 8734) | function isPrimitive(input) {
  function toPrimitive (line 8745) | function toPrimitive(input) {

FILE: ace/worker-html.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 678) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 683) | function positionInDocument(docLines, position) {
  function validateDelta (line 688) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 907) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 912) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function s (line 1413) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function isScopeMarker (line 1415) | function isScopeMarker(node) {
  function isListItemScopeMarker (line 1440) | function isListItemScopeMarker(node) {
  function isTableScopeMarker (line 1446) | function isTableScopeMarker(node) {
  function isTableBodyScopeMarker (line 1451) | function isTableBodyScopeMarker(node) {
  function isTableRowScopeMarker (line 1458) | function isTableRowScopeMarker(node) {
  function isButtonScopeMarker (line 1463) | function isButtonScopeMarker(node) {
  function isSelectScopeMarker (line 1468) | function isSelectScopeMarker(node) {
  function ElementStack (line 1472) | function ElementStack() {
  function isAlphaNumeric (line 1615) | function isAlphaNumeric(c) {
  function isHexDigit (line 1619) | function isHexDigit(c) {
  function isDecimalDigit (line 1623) | function isDecimalDigit(c) {
  function InputStream (line 1787) | function InputStream() {
  function StackItem (line 2001) | function StackItem(namespaceURI, localName, attributes, node) {
  function getAttribute (line 2039) | function getAttribute(item, name) {
  function isWhitespace (line 2084) | function isWhitespace(c){
  function isAlpha (line 2088) | function isAlpha(c) {
  function Tokenizer (line 2091) | function Tokenizer(tokenHandler) {
  function data_state (line 2158) | function data_state(buffer) {
  function character_reference_in_data_state (line 2178) | function character_reference_in_data_state(buffer) {
  function rcdata_state (line 2185) | function rcdata_state(buffer) {
  function character_reference_in_rcdata_state (line 2206) | function character_reference_in_rcdata_state(buffer) {
  function rawtext_state (line 2213) | function rawtext_state(buffer) {
  function plaintext_state (line 2231) | function plaintext_state(buffer) {
  function script_data_state (line 2248) | function script_data_state(buffer) {
  function rcdata_less_than_sign_state (line 2266) | function rcdata_less_than_sign_state(buffer) {
  function rcdata_end_tag_open_state (line 2279) | function rcdata_end_tag_open_state(buffer) {
  function rcdata_end_tag_name_state (line 2292) | function rcdata_end_tag_name_state(buffer) {
  function rawtext_less_than_sign_state (line 2316) | function rawtext_less_than_sign_state(buffer) {
  function rawtext_end_tag_open_state (line 2329) | function rawtext_end_tag_open_state(buffer) {
  function rawtext_end_tag_name_state (line 2342) | function rawtext_end_tag_name_state(buffer) {
  function script_data_less_than_sign_state (line 2366) | function script_data_less_than_sign_state(buffer) {
  function script_data_end_tag_open_state (line 2382) | function script_data_end_tag_open_state(buffer) {
  function script_data_end_tag_name_state (line 2395) | function script_data_end_tag_name_state(buffer) {
  function script_data_escape_start_state (line 2418) | function script_data_escape_start_state(buffer) {
  function script_data_escape_start_dash_state (line 2430) | function script_data_escape_start_dash_state(buffer) {
  function script_data_escaped_state (line 2442) | function script_data_escaped_state(buffer) {
  function script_data_escaped_dash_state (line 2463) | function script_data_escaped_dash_state(buffer) {
  function script_data_escaped_dash_dash_state (line 2484) | function script_data_escaped_dash_dash_state(buffer) {
  function script_data_escaped_less_then_sign_state (line 2506) | function script_data_escaped_less_then_sign_state(buffer) {
  function script_data_escaped_end_tag_open_state (line 2523) | function script_data_escaped_end_tag_open_state(buffer) {
  function script_data_escaped_end_tag_name_state (line 2536) | function script_data_escaped_end_tag_name_state(buffer) {
  function script_data_double_escape_start_state (line 2560) | function script_data_double_escape_start_state(buffer) {
  function script_data_double_escaped_state (line 2579) | function script_data_double_escaped_state(buffer) {
  function script_data_double_escaped_dash_state (line 2602) | function script_data_double_escaped_dash_state(buffer) {
  function script_data_double_escaped_dash_dash_state (line 2625) | function script_data_double_escaped_dash_dash_state(buffer) {
  function script_data_double_escaped_less_than_sign_state (line 2651) | function script_data_double_escaped_less_than_sign_state(buffer) {
  function script_data_double_escape_end_state (line 2664) | function script_data_double_escape_end_state(buffer) {
  function tag_open_state (line 2683) | function tag_open_state(buffer) {
  function close_tag_open_state (line 2714) | function close_tag_open_state(buffer) {
  function tag_name_state (line 2735) | function tag_name_state(buffer) {
  function before_attribute_name_state (line 2760) | function before_attribute_name_state(buffer) {
  function attribute_name_state (line 2789) | function attribute_name_state(buffer) {
  function after_attribute_name_state (line 2839) | function after_attribute_name_state(buffer) {
  function before_attribute_value_state (line 2870) | function before_attribute_value_state(buffer) {
  function attribute_value_double_quoted_state (line 2903) | function attribute_value_double_quoted_state(buffer) {
  function attribute_value_single_quoted_state (line 2925) | function attribute_value_single_quoted_state(buffer) {
  function attribute_value_unquoted_state (line 2945) | function attribute_value_unquoted_state(buffer) {
  function character_reference_in_attribute_value_state (line 2977) | function character_reference_in_attribute_value_state(buffer) {
  function after_attribute_value_state (line 2989) | function after_attribute_value_state(buffer) {
  function self_closing_tag_state (line 3010) | function self_closing_tag_state(buffer) {
  function bogus_comment_state (line 3028) | function bogus_comment_state(buffer) {
  function markup_declaration_open_state (line 3037) | function markup_declaration_open_state(buffer) {
  function cdata_section_state (line 3066) | function cdata_section_state(buffer) {
  function comment_start_state (line 3076) | function comment_start_state(buffer) {
  function comment_start_dash_state (line 3099) | function comment_start_dash_state(buffer) {
  function comment_state (line 3122) | function comment_state(buffer) {
  function comment_end_dash_state (line 3141) | function comment_end_dash_state(buffer) {
  function comment_end_state (line 3161) | function comment_end_state(buffer) {
  function comment_end_bang_state (line 3189) | function comment_end_bang_state(buffer) {
  function doctype_state (line 3209) | function doctype_state(buffer) {
  function before_doctype_name_state (line 3227) | function before_doctype_name_state(buffer) {
  function doctype_name_state (line 3250) | function doctype_name_state(buffer) {
  function after_doctype_name_state (line 3272) | function after_doctype_name_state(buffer) {
  function after_doctype_public_keyword_state (line 3322) | function after_doctype_public_keyword_state(buffer) {
  function before_doctype_public_identifier_state (line 3343) | function before_doctype_public_identifier_state(buffer) {
  function doctype_public_identifier_double_quoted_state (line 3371) | function doctype_public_identifier_double_quoted_state(buffer) {
  function doctype_public_identifier_single_quoted_state (line 3392) | function doctype_public_identifier_single_quoted_state(buffer) {
  function after_doctype_public_identifier_state (line 3413) | function after_doctype_public_identifier_state(buffer) {
  function between_doctype_public_and_system_identifiers_state (line 3442) | function between_doctype_public_and_system_identifiers_state(buffer) {
  function after_doctype_system_keyword_state (line 3468) | function after_doctype_system_keyword_state(buffer) {
  function before_doctype_system_identifier_state (line 3489) | function before_doctype_system_identifier_state(buffer) {
  function doctype_system_identifier_double_quoted_state (line 3517) | function doctype_system_identifier_double_quoted_state(buffer) {
  function doctype_system_identifier_single_quoted_state (line 3538) | function doctype_system_identifier_single_quoted_state(buffer) {
  function after_doctype_system_identifier_state (line 3559) | function after_doctype_system_identifier_state(buffer) {
  function bogus_doctype_state (line 3578) | function bogus_doctype_state(buffer) {
  function isWhitespace (line 3622) | function isWhitespace(ch) {
  function isWhitespaceOrReplacementCharacter (line 3626) | function isWhitespaceOrReplacementCharacter(ch) {
  function isAllWhitespace (line 3630) | function isAllWhitespace(characters) {
  function isAllWhitespaceOrReplacementCharacters (line 3639) | function isAllWhitespaceOrReplacementCharacters(characters) {
  function getAttribute (line 3648) | function getAttribute(node, name) {
  function CharacterBuffer (line 3658) | function CharacterBuffer(characters) {
  function TreeBuilder (line 3700) | function TreeBuilder() {
  function isActiveFormattingElement (line 6017) | function isActiveFormattingElement(el) {
  function formatMessage (line 6501) | function formatMessage(format, args) {
  function SAXParser (line 6902) | function SAXParser() {
  function SAXTreeBuilder (line 6955) | function SAXTreeBuilder() {
  function getAttribute (line 7039) | function getAttribute(node, name) {
  function Node (line 7068) | function Node(locator) {
  function ParentNode (line 7108) | function ParentNode(locator) {
  function Document (line 7213) | function Document (locator) {
  function DocumentFragment (line 7225) | function DocumentFragment() {
  function Element (line 7233) | function Element(locator, uri, localName, qName, atts, prefixMappings) {
  function Characters (line 7263) | function Characters(locator, data){
  function IgnorableWhitespace (line 7273) | function IgnorableWhitespace(locator, data) {
  function Comment (line 7283) | function Comment(locator, data) {
  function CDATA (line 7293) | function CDATA(locator) {
  function Entity (line 7305) | function Entity(name) {
  function SkippedEntity (line 7319) | function SkippedEntity(name) {
  function ProcessingInstruction (line 7329) | function ProcessingInstruction(target, data) {
  function DTD (line 7342) | function DTD(name, publicIdentifier, systemIdentifier) {
  function TreeParser (line 7363) | function TreeParser(contentHandler, lexicalHandler){
  function NullLexicalHandler (line 7487) | function NullLexicalHandler() {
  function replacer (line 9782) | function replacer(key, value) {
  function truncate (line 9795) | function truncate(s, n) {
  function getMessage (line 9803) | function getMessage(self) {
  function fail (line 9809) | function fail(actual, expected, message, operator, stackStartFunction) {
  function ok (line 9820) | function ok(value, message) {
  function _deepEqual (line 9841) | function _deepEqual(actual, expected) {
  function isArguments (line 9868) | function isArguments(object) {
  function objEquiv (line 9872) | function objEquiv(a, b) {
  function expectedException (line 9924) | function expectedException(actual, expected) {
  function _throws (line 9940) | function _throws(shouldThrow, block, expected, message) {
  function deprecated (line 10052) | function deprecated() {
  function inspect (line 10089) | function inspect(obj, opts) {
  function stylizeWithColor (line 10136) | function stylizeWithColor(str, styleType) {
  function stylizeNoColor (line 10148) | function stylizeNoColor(str, styleType) {
  function arrayToHash (line 10153) | function arrayToHash(array) {
  function formatValue (line 10164) | function formatValue(ctx, value, recurseTimes) {
  function formatPrimitive (line 10254) | function formatPrimitive(ctx, value) {
  function formatError (line 10272) | function formatError(value) {
  function formatArray (line 10277) | function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
  function formatProperty (line 10297) | function formatProperty(ctx, value, recurseTimes, visibleKeys, key, arra...
  function reduceToSingleString (line 10356) | function reduceToSingleString(output, base, braces) {
  function isArray (line 10375) | function isArray(ar) {
  function isBoolean (line 10380) | function isBoolean(arg) {
  function isNull (line 10385) | function isNull(arg) {
  function isNullOrUndefined (line 10390) | function isNullOrUndefined(arg) {
  function isNumber (line 10395) | function isNumber(arg) {
  function isString (line 10400) | function isString(arg) {
  function isSymbol (line 10405) | function isSymbol(arg) {
  function isUndefined (line 10410) | function isUndefined(arg) {
  function isRegExp (line 10415) | function isRegExp(re) {
  function isObject (line 10420) | function isObject(arg) {
  function isDate (line 10425) | function isDate(d) {
  function isError (line 10430) | function isError(e) {
  function isFunction (line 10436) | function isFunction(arg) {
  function isPrimitive (line 10441) | function isPrimitive(arg) {
  function objectToString (line 10453) | function objectToString(o) {
  function pad (line 10458) | function pad(n) {
  function timestamp (line 10465) | function timestamp() {
  function hasOwnProperty (line 10488) | function hasOwnProperty(obj, prop) {
  function EventEmitter (line 10497) | function EventEmitter() {
  function g (line 10618) | function g() {
  function isFunction (line 10734) | function isFunction(arg) {
  function isNumber (line 10738) | function isNumber(arg) {
  function isObject (line 10742) | function isObject(arg) {
  function isUndefined (line 10746) | function isUndefined(arg) {
  function noop (line 10821) | function noop() {}
  function Empty (line 10915) | function Empty() {}
  function makeArray (line 10973) | function makeArray(l) {
  function doesDefinePropertyWork (line 11377) | function doesDefinePropertyWork(object) {
  function toInteger (line 11559) | function toInteger(n) {
  function isPrimitive (line 11569) | function isPrimitive(input) {
  function toPrimitive (line 11580) | function toPrimitive(input) {

FILE: ace/worker-javascript.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 490) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 495) | function positionInDocument(docLines, position) {
  function validateDelta (line 500) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 719) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 724) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function newRequire (line 1415) | function newRequire(name, jumped){
  function EventEmitter (line 1438) | function EventEmitter() {
  function g (line 1559) | function g() {
  function isFunction (line 1675) | function isFunction(arg) {
  function isNumber (line 1679) | function isNumber(arg) {
  function isObject (line 1683) | function isObject(arg) {
  function isUndefined (line 1687) | function isUndefined(arg) {
  function baseFindIndex (line 1810) | function baseFindIndex(array, predicate, fromRight) {
  function baseIndexOf (line 1822) | function baseIndexOf(array, value, fromIndex) {
  function baseIsFunction (line 1837) | function baseIsFunction(value) {
  function baseToString (line 1841) | function baseToString(value) {
  function indexOfNaN (line 1848) | function indexOfNaN(array, fromIndex, fromRight) {
  function isObjectLike (line 1861) | function isObjectLike(value) {
  function lodash (line 1920) | function lodash() {
  function arrayCopy (line 1944) | function arrayCopy(source, array) {
  function arrayEach (line 1955) | function arrayEach(array, iteratee) {
  function arrayFilter (line 1967) | function arrayFilter(array, predicate) {
  function arrayMap (line 1982) | function arrayMap(array, iteratee) {
  function arrayMax (line 1993) | function arrayMax(array) {
  function arraySome (line 2007) | function arraySome(array, predicate) {
  function assignWith (line 2019) | function assignWith(object, source, customizer) {
  function baseCopy (line 2045) | function baseCopy(source, props, object) {
  function baseCallback (line 2058) | function baseCallback(func, thisArg, argCount) {
  function baseClone (line 2076) | function baseClone(value, isDeep, customizer, key, object, stackA, stack...
  function baseFilter (line 2128) | function baseFilter(collection, predicate) {
  function baseForIn (line 2140) | function baseForIn(object, iteratee) {
  function baseForOwn (line 2144) | function baseForOwn(object, iteratee) {
  function baseGet (line 2148) | function baseGet(object, path, pathKey) {
  function baseIsEqual (line 2164) | function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
  function baseIsEqualDeep (line 2178) | function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, ...
  function baseIsMatch (line 2238) | function baseIsMatch(object, props, values, strictCompareFlags, customiz...
  function baseMatches (line 2272) | function baseMatches(source) {
  function baseMatchesProperty (line 2305) | function baseMatchesProperty(path, value) {
  function baseMerge (line 2331) | function baseMerge(object, source, customizer, stackA, stackB) {
  function baseMergeDeep (line 2367) | function baseMergeDeep(object, source, key, mergeFunc, customizer, stack...
  function baseProperty (line 2407) | function baseProperty(key) {
  function basePropertyDeep (line 2413) | function basePropertyDeep(path) {
  function baseSlice (line 2421) | function baseSlice(array, start, end) {
  function baseSome (line 2443) | function baseSome(collection, predicate) {
  function baseValues (line 2453) | function baseValues(object, props) {
  function binaryIndex (line 2464) | function binaryIndex(array, value, retHighest) {
  function binaryIndexBy (line 2484) | function binaryIndexBy(array, value, iteratee, retHighest) {
  function bindCallback (line 2513) | function bindCallback(func, thisArg, argCount) {
  function bufferClone (line 2539) | function bufferClone(buffer) {
  function createAssigner (line 2561) | function createAssigner(assigner) {
  function createBaseEach (line 2590) | function createBaseEach(eachFunc, fromRight) {
  function createBaseFor (line 2608) | function createBaseFor(fromRight) {
  function createFindIndex (line 2625) | function createFindIndex(fromRight) {
  function createForEach (line 2635) | function createForEach(arrayFunc, eachFunc) {
  function equalArrays (line 2643) | function equalArrays(array, other, equalFunc, customizer, isLoose, stack...
  function equalByTag (line 2680) | function equalByTag(object, other, tag) {
  function equalObjects (line 2701) | function equalObjects(object, other, equalFunc, customizer, isLoose, sta...
  function getCallback (line 2750) | function getCallback(func, thisArg, argCount) {
  function getIndexOf (line 2756) | function getIndexOf(collection, target, fromIndex) {
  function initCloneArray (line 2768) | function initCloneArray(array) {
  function initCloneObject (line 2779) | function initCloneObject(object) {
  function initCloneByTag (line 2787) | function initCloneByTag(object, tag, isDeep) {
  function isIndex (line 2814) | function isIndex(value, length) {
  function isIterateeCall (line 2820) | function isIterateeCall(value, index, object) {
  function isKey (line 2838) | function isKey(value, object) {
  function isLength (line 2850) | function isLength(value) {
  function isStrictComparable (line 2854) | function isStrictComparable(value) {
  function shimIsPlainObject (line 2858) | function shimIsPlainObject(value) {
  function shimKeys (line 2874) | function shimKeys(object) {
  function toObject (line 2895) | function toObject(value) {
  function toPath (line 2899) | function toPath(value) {
  function indexOf (line 2912) | function indexOf(array, value, fromIndex) {
  function last (line 2931) | function last(array) {
  function slice (line 2936) | function slice(array, start, end) {
  function unzip (line 2948) | function unzip(array) {
  function includes (line 2963) | function includes(collection, target, fromIndex, guard) {
  function reject (line 2982) | function reject(collection, predicate, thisArg) {
  function some (line 2990) | function some(collection, predicate, thisArg) {
  function restParam (line 3001) | function restParam(func, start) {
  function clone (line 3030) | function clone(value, isDeep, customizer, thisArg) {
  function isArguments (line 3043) | function isArguments(value) {
  function isEmpty (line 3052) | function isEmpty(value) {
  function isObject (line 3068) | function isObject(value) {
  function isNative (line 3073) | function isNative(value) {
  function isNumber (line 3083) | function isNumber(value) {
  function isString (line 3099) | function isString(value) {
  function isTypedArray (line 3103) | function isTypedArray(value) {
  function toPlainObject (line 3107) | function toPlainObject(value) {
  function has (line 3117) | function has(object, path) {
  function keysIn (line 3143) | function keysIn(object) {
  function values (line 3174) | function values(object) {
  function escapeRegExp (line 3178) | function escapeRegExp(string) {
  function callback (line 3185) | function callback(func, thisArg, guard) {
  function constant (line 3192) | function constant(value) {
  function identity (line 3198) | function identity(value) {
  function property (line 3202) | function property(path) {
  function checkOption (line 3319) | function checkOption(name, t) {
  function isString (line 3336) | function isString(obj) {
  function isIdentifier (line 3340) | function isIdentifier(tkn, value) {
  function isReserved (line 3350) | function isReserved(token) {
  function supplant (line 3374) | function supplant(str, data) {
  function combine (line 3381) | function combine(dest, src) {
  function processenforceall (line 3388) | function processenforceall() {
  function assume (line 3404) | function assume() {
  function quit (line 3530) | function quit(code, line, chr) {
  function removeIgnoredMessages (line 3544) | function removeIgnoredMessages() {
  function warning (line 3551) | function warning(code, t, a, b, c, d) {
  function warningAt (line 3598) | function warningAt(m, l, ch, a, b, c, d) {
  function error (line 3605) | function error(m, t, a, b, c, d) {
  function errorAt (line 3609) | function errorAt(m, l, ch, a, b, c, d) {
  function addInternalSrc (line 3615) | function addInternalSrc(elem, src) {
  function doOption (line 3626) | function doOption() {
  function peek (line 3928) | function peek(p) {
  function peekIgnoreEOL (line 3949) | function peekIgnoreEOL() {
  function advance (line 3958) | function advance(id, t) {
  function isInfix (line 4021) | function isInfix(token) {
  function isEndOfExpr (line 4025) | function isEndOfExpr() {
  function isBeginOfExpr (line 4037) | function isBeginOfExpr(prev) {
  function expression (line 4041) | function expression(rbp, initial) {
  function startLine (line 4124) | function startLine(token) {
  function nobreaknonadjacent (line 4128) | function nobreaknonadjacent(left, right) {
  function nolinebreak (line 4136) | function nolinebreak(t) {
  function nobreakcomma (line 4143) | function nobreakcomma(left, right) {
  function comma (line 4155) | function comma(opts) {
  function symbol (line 4208) | function symbol(s, p) {
  function delim (line 4220) | function delim(s) {
  function stmt (line 4226) | function stmt(s, f) {
  function blockstmt (line 4233) | function blockstmt(s, f) {
  function reserveName (line 4239) | function reserveName(x) {
  function prefix (line 4247) | function prefix(s, f) {
  function type (line 4276) | function type(s, f) {
  function reserve (line 4283) | function reserve(name, func) {
  function FutureReservedWord (line 4290) | function FutureReservedWord(name, meta) {
  function reservevar (line 4306) | function reservevar(s, v) {
  function infix (line 4315) | function infix(s, f, p, w) {
  function application (line 4337) | function application(s) {
  function relation (line 4350) | function relation(s, f) {
  function isPoorRelation (line 4381) | function isPoorRelation(node) {
  function isTypoTypeof (line 4401) | function isTypoTypeof(left, right, state) {
  function isGlobalEval (line 4418) | function isGlobalEval(left, state) {
  function findNativePrototype (line 4436) | function findNativePrototype(left) {
  function checkLeftSideAssign (line 4463) | function checkLeftSideAssign(left, assignToken, options) {
  function assignop (line 4524) | function assignop(s, f, p) {
  function bitwise (line 4542) | function bitwise(s, f, p) {
  function bitwiseassignop (line 4556) | function bitwiseassignop(s) {
  function suffix (line 4570) | function suffix(s) {
  function optionalidentifier (line 4592) | function optionalidentifier(fnparam, prop, preserve) {
  function identifier (line 4621) | function identifier(fnparam, prop) {
  function reachable (line 4654) | function reachable(controlToken) {
  function parseFinalSemicolon (line 4682) | function parseFinalSemicolon() {
  function statement (line 4702) | function statement() {
  function statements (line 4766) | function statements() {
  function directives (line 4784) | function directives() {
  function block (line 4827) | function block(ordinary, stmt, isfunc, isfatarrow, iscase) {
  function countMember (line 4955) | function countMember(m) {
  function comprehensiveArrayExpression (line 5618) | function comprehensiveArrayExpression() {
  function isMethod (line 5727) | function isMethod() {
  function isPropertyName (line 5733) | function isPropertyName(token) {
  function propertyName (line 5738) | function propertyName(preserveOrToken) {
  function functionparams (line 5771) | function functionparams(options) {
  function functor (line 5852) | function functor(name, token, overwrites) {
  function isFunctor (line 5893) | function isFunctor(token) {
  function hasParsedCode (line 5896) | function hasParsedCode(funct) {
  function doTemplateLiteral (line 5900) | function doTemplateLiteral(left) {
  function doFunction (line 5930) | function doFunction(options) {
  function createMetrics (line 6015) | function createMetrics(functionStartToken) {
  function increaseComplexityCount (line 6054) | function increaseComplexityCount() {
  function checkCondAssignment (line 6058) | function checkCondAssignment(expr) {
  function checkProperties (line 6083) | function checkProperties(props) {
  function metaProperty (line 6093) | function metaProperty(name, c) {
  function destructuringPattern (line 6228) | function destructuringPattern(options) {
  function destructuringPatternRecursive (line 6239) | function destructuringPatternRecursive(options) {
  function destructuringPatternMatch (line 6371) | function destructuringPatternMatch(tokens, value) {
  function blockVariableStatement (line 6388) | function blockVariableStatement(type, statement, context) {
  function classdef (line 6585) | function classdef(isStatement) {
  function classtail (line 6605) | function classtail(c) {
  function classbody (line 6619) | function classbody(c) {
  function doCatch (line 6819) | function doCatch() {
  function saveProperty (line 7577) | function saveProperty(props, name, tkn, isClass, isStatic) {
  function saveAccessor (line 7593) | function saveAccessor(accessorType, props, name, tkn, isClass, isStatic) {
  function computedPropertyName (line 7620) | function computedPropertyName() {
  function checkPunctuators (line 7629) | function checkPunctuators(token, values) {
  function checkPunctuator (line 7635) | function checkPunctuator(token, value) {
  function destructuringAssignOrJsonValue (line 7638) | function destructuringAssignOrJsonValue() {
  function declare (line 7660) | function declare(v) {
  function use (line 7669) | function use(v) {
  function jsonValue (line 7738) | function jsonValue() {
  function each (line 7852) | function each(obj, cb) {
  method isJSON (line 7939) | get isJSON() {
  function asyncTrigger (line 8207) | function asyncTrigger() {
  function Lexer (line 8224) | function Lexer(source) {
  function commentToken (line 8462) | function commentToken(label, body, opt) {
  function isNonAsciiIdentifierStart (line 8624) | function isNonAsciiIdentifierStart(code) {
  function isNonAsciiIdentifierPart (line 8628) | function isNonAsciiIdentifierPart(code) {
  function isHexDigit (line 8632) | function isHexDigit(str) {
  function removeEscapeSequences (line 8713) | function removeEscapeSequences(id) {
  function isDecimalDigit (line 8764) | function isDecimalDigit(str) {
  function isOctalDigit (line 8768) | function isOctalDigit(str) {
  function isBinaryDigit (line 8772) | function isBinaryDigit(str) {
  function isHexDigit (line 8776) | function isHexDigit(str) {
  function isIdentifierStart (line 8780) | function isIdentifierStart(ch) {
  function isReserved (line 9458) | function isReserved(token, isProperty) {
  function NameStack (line 9961) | function NameStack() {
  function _newScope (line 10176) | function _newScope(type) {
  function warning (line 10198) | function warning(code, token) {
  function error (line 10206) | function error(code, token) {
  function _setupUsages (line 10214) | function _setupUsages(labelName) {
  function _checkForUnused (line 10262) | function _checkForUnused() {
  function _checkParams (line 10277) | function _checkParams() {
  function _getLabel (line 10303) | function _getLabel(labelName) {
  function usedSoFarInCurrentFunction (line 10312) | function usedSoFarInCurrentFunction(labelName) {
  function _checkOuterShadow (line 10325) | function _checkOuterShadow(labelName, token) {
  function _latedefWarning (line 10349) | function _latedefWarning(type, labelName, token) {
  function startRegex (line 11696) | function startRegex(arr) {
  function Empty (line 11838) | function Empty() {}
  function makeArray (line 11896) | function makeArray(l) {
  function doesDefinePropertyWork (line 12300) | function doesDefinePropertyWork(object) {
  function toInteger (line 12482) | function toInteger(n) {
  function isPrimitive (line 12492) | function isPrimitive(input) {
  function toPrimitive (line 12503) | function toPrimitive(input) {

FILE: ace/worker-json.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 490) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 495) | function positionInDocument(docLines, position) {
  function validateDelta (line 500) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 719) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 724) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function Empty (line 1708) | function Empty() {}
  function makeArray (line 1766) | function makeArray(l) {
  function doesDefinePropertyWork (line 2170) | function doesDefinePropertyWork(object) {
  function toInteger (line 2352) | function toInteger(n) {
  function isPrimitive (line 2362) | function isPrimitive(input) {
  function toPrimitive (line 2373) | function toPrimitive(input) {

FILE: ace/worker-lua.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 490) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 495) | function positionInDocument(docLines, position) {
  function validateDelta (line 500) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 719) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 724) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function finishNode (line 1704) | function finishNode(node) {
  function indexOfObject (line 1723) | function indexOfObject(array, property, element) {
  function sprintf (line 1730) | function sprintf(format) {
  function extend (line 1738) | function extend() {
  function raise (line 1752) | function raise(token) {
  function raiseUnexpectedToken (line 1772) | function raiseUnexpectedToken(type, token) {
  function unexpected (line 1776) | function unexpected(found, near) {
  function lex (line 1806) | function lex() {
  function skipWhiteSpace (line 1872) | function skipWhiteSpace() {
  function scanIdentifierOrKeyword (line 1886) | function scanIdentifierOrKeyword() {
  function scanPunctuator (line 1911) | function scanPunctuator(value) {
  function scanVarargLiteral (line 1922) | function scanVarargLiteral() {
  function scanStringLiteral (line 1933) | function scanStringLiteral() {
  function scanLongStringLiteral (line 1962) | function scanLongStringLiteral() {
  function scanNumericLiteral (line 1975) | function scanNumericLiteral() {
  function readHexLiteral (line 1991) | function readHexLiteral() {
  function readDecLiteral (line 2028) | function readDecLiteral() {
  function readEscapeSequence (line 2046) | function readEscapeSequence() {
  function scanComment (line 2072) | function scanComment() {
  function readLongString (line 2111) | function readLongString() {
  function next (line 2149) | function next() {
  function consume (line 2155) | function consume(value) {
  function expect (line 2163) | function expect(value) {
  function isWhiteSpace (line 2168) | function isWhiteSpace(charCode) {
  function isLineTerminator (line 2172) | function isLineTerminator(charCode) {
  function isDecDigit (line 2176) | function isDecDigit(charCode) {
  function isHexDigit (line 2180) | function isHexDigit(charCode) {
  function isIdentifierStart (line 2184) | function isIdentifierStart(charCode) {
  function isIdentifierPart (line 2188) | function isIdentifierPart(charCode) {
  function isKeyword (line 2192) | function isKeyword(id) {
  function isUnary (line 2210) | function isUnary(token) {
  function isCallExpression (line 2215) | function isCallExpression(expression) {
  function isBlockFollow (line 2225) | function isBlockFollow(token) {
  function createScope (line 2239) | function createScope() {
  function exitScope (line 2242) | function exitScope() {
  function scopeIdentifierName (line 2246) | function scopeIdentifierName(name) {
  function scopeIdentifier (line 2250) | function scopeIdentifier(node) {
  function attachScope (line 2254) | function attachScope(node, isLocal) {
  function scopeHasName (line 2260) | function scopeHasName(name) {
  function createLocationMarker (line 2267) | function createLocationMarker() {
  function Marker (line 2271) | function Marker(token) {
  function markLocation (line 2295) | function markLocation() {
  function pushLocation (line 2298) | function pushLocation(marker) {
  function parseChunk (line 2302) | function parseChunk() {
  function parseBlock (line 2311) | function parseBlock(terminator) {
  function parseStatement (line 2329) | function parseStatement() {
  function parseLabelStatement (line 2357) | function parseLabelStatement() {
  function parseBreakStatement (line 2370) | function parseBreakStatement() {
  function parseGotoStatement (line 2374) | function parseGotoStatement() {
  function parseDoStatement (line 2382) | function parseDoStatement() {
  function parseWhileStatement (line 2388) | function parseWhileStatement() {
  function parseRepeatStatement (line 2396) | function parseRepeatStatement() {
  function parseReturnStatement (line 2403) | function parseReturnStatement() {
  function parseIfStatement (line 2418) | function parseIfStatement() {
  function parseForStatement (line 2455) | function parseForStatement() {
  function parseLocalStatement (line 2493) | function parseLocalStatement() {
  function parseAssignmentOrCallStatement (line 2529) | function parseAssignmentOrCallStatement() {
  function parseIdentifier (line 2563) | function parseIdentifier() {
  function parseFunctionDeclaration (line 2571) | function parseFunctionDeclaration(name, isLocal) {
  function parseFunctionName (line 2602) | function parseFunctionName() {
  function parseTableConstructor (line 2627) | function parseTableConstructor() {
  function parseExpression (line 2664) | function parseExpression() {
  function parseExpectedExpression (line 2669) | function parseExpectedExpression() {
  function binaryPrecedence (line 2675) | function binaryPrecedence(operator) {
  function parseSubExpression (line 2697) | function parseSubExpression(minPrecedence) {
  function parsePrefixExpression (line 2736) | function parsePrefixExpression() {
  function parseCallExpression (line 2797) | function parseCallExpression(base) {
  function parsePrimaryExpression (line 2826) | function parsePrimaryExpression() {
  function parse (line 2851) | function parse(_input, _options) {
  function write (line 2875) | function write(_input) {
  function end (line 2882) | function end(_input) {
  function Empty (line 2943) | function Empty() {}
  function makeArray (line 3001) | function makeArray(l) {
  function doesDefinePropertyWork (line 3405) | function doesDefinePropertyWork(object) {
  function toInteger (line 3587) | function toInteger(n) {
  function isPrimitive (line 3597) | function isPrimitive(input) {
  function toPrimitive (line 3608) | function toPrimitive(input) {

FILE: ace/worker-php.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 490) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 495) | function positionInDocument(docLines, position) {
  function validateDelta (line 500) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 719) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 724) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function Empty (line 3612) | function Empty() {}
  function makeArray (line 3670) | function makeArray(l) {
  function doesDefinePropertyWork (line 4074) | function doesDefinePropertyWork(object) {
  function toInteger (line 4256) | function toInteger(n) {
  function isPrimitive (line 4266) | function isPrimitive(input) {
  function toPrimitive (line 4277) | function toPrimitive(input) {

FILE: ace/worker-xml.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 678) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 683) | function positionInDocument(docLines, position) {
  function validateDelta (line 688) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 907) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 912) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function XMLReader (line 1425) | function XMLReader(){
  function parse (line 1439) | function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
  function copyLocator (line 1573) | function copyLocator(f,t){
  function parseElementStartPart (line 1579) | function parseElementStartPart(source,start,el,entityReplacer,errorHandl...
  function appendElement (line 1716) | function appendElement(el,domBuilder,parseStack){
  function parseHtmlSpecialContent (line 1781) | function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplace...
  function fixSelfClosed (line 1798) | function fixSelfClosed(source,elStartEnd,tagName,closeMap){
  function _copy (line 1805) | function _copy(source,target){
  function parseDCC (line 1808) | function parseDCC(source,start,domBuilder,errorHandler){//sure start wit...
  function parseInstruction (line 1856) | function parseInstruction(source,start,domBuilder){
  function ElementAttributes (line 1870) | function ElementAttributes(source){
  function _set_proto_ (line 1897) | function _set_proto_(thiz,parent){
  function p (line 1903) | function p(){}
  function split (line 1913) | function split(source,start){
  function copy (line 1930) | function copy(src,dest){
  function _extends (line 1935) | function _extends(Class,Super){
  function DOMException (line 1988) | function DOMException(code, message) {
  function NodeList (line 2003) | function NodeList() {
  function LiveNodeList (line 2011) | function LiveNodeList(node,refresh){
  function _updateLiveList (line 2016) | function _updateLiveList(list){
  function NamedNodeMap (line 2031) | function NamedNodeMap() {
  function _findNodeIndex (line 2034) | function _findNodeIndex(list,node){
  function _addNamedNode (line 2041) | function _addNamedNode(el,list,newAttr,oldAttr){
  function _removeNamedNode (line 2056) | function _removeNamedNode(el,list,attr){
  function DOMImplementation (line 2128) | function DOMImplementation(/* Object */ features) {
  function Node (line 2170) | function Node() {
  function _xmlEncoder (line 2261) | function _xmlEncoder(c){
  function _visitNode (line 2272) | function _visitNode(node,callback){
  function Document (line 2285) | function Document(){
  function _onAddAttribute (line 2287) | function _onAddAttribute(doc,el,newAttr){
  function _onRemoveAttribute (line 2294) | function _onRemoveAttribute(doc,el,newAttr,remove){
  function _onUpdateChild (line 2301) | function _onUpdateChild(doc,el,newChild){
  function _removeChild (line 2318) | function _removeChild(parentNode,child){
  function _insertBefore (line 2334) | function _insertBefore(parentNode,newChild,nextChild){
  function _appendSingleChild (line 2373) | function _appendSingleChild(parentNode,newChild){
  function Element (line 2531) | function Element() {
  function Attr (line 2620) | function Attr() {
  function CharacterData (line 2626) | function CharacterData() {
  function Text (line 2657) | function Text() {
  function Comment (line 2676) | function Comment() {
  function CDATASection (line 2684) | function CDATASection() {
  function DocumentType (line 2693) | function DocumentType() {
  function Notation (line 2698) | function Notation() {
  function Entity (line 2703) | function Entity() {
  function EntityReference (line 2708) | function EntityReference() {
  function DocumentFragment (line 2713) | function DocumentFragment() {
  function ProcessingInstruction (line 2720) | function ProcessingInstruction() {
  function XMLSerializer (line 2724) | function XMLSerializer(){}
  function serializeToString (line 2733) | function serializeToString(node,buf){
  function importNode (line 2806) | function importNode(doc,node,deep){
  function cloneNode (line 2832) | function cloneNode(doc,node,deep){
  function __set__ (line 2869) | function __set__(object,key,value){
  function getTextContent (line 2872) | function getTextContent(node){
  function DOMParser (line 2936) | function DOMParser(options){
  function buildErrorHandler (line 2966) | function buildErrorHandler(errorImpl,domBuilder,locator){
  function DOMHandler (line 2999) | function DOMHandler() {
  function position (line 3002) | function position(locator,node){
  function _locator (line 3105) | function _locator(l){
  function _toString (line 3110) | function _toString(chars,start,length){
  function appendElement (line 3123) | function appendElement (hander,node) {
  function Empty (line 3201) | function Empty() {}
  function makeArray (line 3259) | function makeArray(l) {
  function doesDefinePropertyWork (line 3663) | function doesDefinePropertyWork(object) {
  function toInteger (line 3845) | function toInteger(n) {
  function isPrimitive (line 3855) | function isPrimitive(input) {
  function toPrimitive (line 3866) | function toPrimitive(input) {

FILE: ace/worker-xquery.js
  function resolveModuleId (line 82) | function resolveModuleId(id, paths) {
  function throwDeltaError (line 490) | function throwDeltaError(delta, errorText){
  function positionInDocument (line 495) | function positionInDocument(docLines, position) {
  function validateDelta (line 500) | function validateDelta(docLines, delta) {
  function $pointsInOrder (line 719) | function $pointsInOrder(point1, point2, equalPointsInOrder) {
  function $getTransformedPoint (line 724) | function $getTransformedPoint(delta, point, moveIfEqual) {
  function newRequire (line 1415) | function newRequire(name, jumped){
  function retrievePrecedingIdentifier (line 2697) | function retrievePrecedingIdentifier(text, pos, regex) {
  function prefixBinarySearch (line 2710) | function prefixBinarySearch(items, prefix) {
  function init (line 3060) | function init(string, parsingEventHandler)
  function reset (line 3073) | function reset(l, b, e)
  function parse_EQName (line 3571) | function parse_EQName()
  function parse_FunctionName (line 3630) | function parse_FunctionName()
  function parse_NCName (line 3977) | function parse_NCName()
  function shift (line 4372) | function shift(t)
  function whitespace (line 4386) | function whitespace()
  function matchW (line 4396) | function matchW(set)
  function lookahead1W (line 4410) | function lookahead1W(set)
  function lookahead1 (line 4420) | function lookahead1(set)
  function error (line 4430) | function error(b, e, s, l, t)
  function match (line 4444) | function match(tokenSetId)
  function init (line 4883) | function init(string, parsingEventHandler)
  function reset (line 4896) | function reset(l, b, e)
  function parse_EQName (line 5394) | function parse_EQName()
  function parse_FunctionName (line 5453) | function parse_FunctionName()
  function parse_NCName (line 5800) | function parse_NCName()
  function shift (line 6195) | function shift(t)
  function whitespace (line 6209) | function whitespace()
  function matchW (line 6219) | function matchW(set)
  function lookahead1W (line 6233) | function lookahead1W(set)
  function lookahead1 (line 6243) | function lookahead1(set)
  function error (line 6253) | function error(b, e, s, l, t)
  function match (line 6267) | function match(tokenSetId)
  function createNode (line 7067) | function createNode(name) {
  function pushNode (line 7081) | function pushNode(name) { //begin
  function popNode (line 7094) | function popNode() {
  function setValue (line 7173) | function setValue(node, begin, end) {
  function init (line 7223) | function init(string, parsingEventHandler)
  function reset (line 7236) | function reset(l, b, e)
  function parse_Module (line 7297) | function parse_Module()
  function parse_VersionDecl (line 7335) | function parse_VersionDecl()
  function parse_LibraryModule (line 7365) | function parse_LibraryModule()
  function parse_ModuleDecl (line 7375) | function parse_ModuleDecl()
  function parse_Prolog (line 7394) | function parse_Prolog()
  function parse_Separator (line 7535) | function parse_Separator()
  function parse_Setter (line 7542) | function parse_Setter()
  function parse_BoundarySpaceDecl (line 7619) | function parse_BoundarySpaceDecl()
  function parse_DefaultCollationDecl (line 7637) | function parse_DefaultCollationDecl()
  function try_DefaultCollationDecl (line 7650) | function try_DefaultCollationDecl()
  function parse_BaseURIDecl (line 7661) | function parse_BaseURIDecl()
  function parse_ConstructionDecl (line 7672) | function parse_ConstructionDecl()
  function parse_OrderingModeDecl (line 7690) | function parse_OrderingModeDecl()
  function parse_EmptyOrderDecl (line 7708) | function parse_EmptyOrderDecl()
  function try_EmptyOrderDecl (line 7730) | function try_EmptyOrderDecl()
  function parse_CopyNamespacesDecl (line 7750) | function parse_CopyNamespacesDecl()
  function parse_PreserveMode (line 7767) | function parse_PreserveMode()
  function parse_InheritMode (line 7781) | function parse_InheritMode()
  function parse_DecimalFormatDecl (line 7795) | function parse_DecimalFormatDecl()
  function parse_DFPropertyName (line 7830) | function parse_DFPropertyName()
  function parse_Import (line 7868) | function parse_Import()
  function parse_SchemaImport (line 7890) | function parse_SchemaImport()
  function parse_SchemaPrefix (line 7925) | function parse_SchemaPrefix()
  function parse_ModuleImport (line 7948) | function parse_ModuleImport()
  function parse_NamespaceDecl (line 7987) | function parse_NamespaceDecl()
  function parse_DefaultNamespaceDecl (line 8003) | function parse_DefaultNamespaceDecl()
  function try_DefaultNamespaceDecl (line 8025) | function try_DefaultNamespaceDecl()
  function parse_FTOptionDecl (line 8045) | function parse_FTOptionDecl()
  function parse_AnnotatedDecl (line 8057) | function parse_AnnotatedDecl()
  function parse_CompatibilityAnnotation (line 8105) | function parse_CompatibilityAnnotation()
  function parse_Annotation (line 8112) | function parse_Annotation()
  function try_Annotation (line 8143) | function try_Annotation()
  function parse_VarDecl (line 8169) | function parse_VarDecl()
  function parse_VarValue (line 8207) | function parse_VarValue()
  function parse_VarDefaultValue (line 8214) | function parse_VarDefaultValue()
  function parse_ContextItemDecl (line 8221) | function parse_ContextItemDecl()
  function parse_ParamList (line 8260) | function parse_ParamList()
  function try_ParamList (line 8279) | function try_ParamList()
  function parse_Param (line 8295) | function parse_Param()
  function try_Param (line 8311) | function try_Param()
  function parse_FunctionBody (line 8323) | function parse_FunctionBody()
  function try_FunctionBody (line 8330) | function try_FunctionBody()
  function parse_EnclosedExpr (line 8335) | function parse_EnclosedExpr()
  function try_EnclosedExpr (line 8346) | function try_EnclosedExpr()
  function parse_OptionDecl (line 8354) | function parse_OptionDecl()
  function parse_Expr (line 8368) | function parse_Expr()
  function try_Expr (line 8386) | function try_Expr()
  function parse_FLWORExpr (line 8401) | function parse_FLWORExpr()
  function try_FLWORExpr (line 8420) | function try_FLWORExpr()
  function parse_InitialClause (line 8435) | function parse_InitialClause()
  function try_InitialClause (line 8460) | function try_InitialClause()
  function parse_IntermediateClause (line 8483) | function parse_IntermediateClause()
  function try_IntermediateClause (line 8507) | function try_IntermediateClause()
  function parse_ForClause (line 8529) | function parse_ForClause()
  function try_ForClause (line 8550) | function try_ForClause()
  function parse_ForBinding (line 8567) | function parse_ForBinding()
  function try_ForBinding (line 8606) | function try_ForBinding()
  function parse_AllowingEmpty (line 8637) | function parse_AllowingEmpty()
  function try_AllowingEmpty (line 8646) | function try_AllowingEmpty()
  function parse_PositionalVar (line 8653) | function parse_PositionalVar()
  function try_PositionalVar (line 8665) | function try_PositionalVar()
  function parse_FTScoreVar (line 8674) | function parse_FTScoreVar()
  function try_FTScoreVar (line 8686) | function try_FTScoreVar()
  function parse_LetClause (line 8695) | function parse_LetClause()
  function try_LetClause (line 8716) | function try_LetClause()
  function parse_LetBinding (line 8733) | function parse_LetBinding()
  function try_LetBinding (line 8761) | function try_LetBinding()
  function parse_WindowClause (line 8784) | function parse_WindowClause()
  function try_WindowClause (line 8802) | function try_WindowClause()
  function parse_TumblingWindowClause (line 8816) | function parse_TumblingWindowClause()
  function try_TumblingWindowClause (line 8849) | function try_TumblingWindowClause()
  function parse_SlidingWindowClause (line 8875) | function parse_SlidingWindowClause()
  function try_SlidingWindowClause (line 8904) | function try_SlidingWindowClause()
  function parse_WindowStartCondition (line 8926) | function parse_WindowStartCondition()
  function try_WindowStartCondition (line 8941) | function try_WindowStartCondition()
  function parse_WindowEndCondition (line 8952) | function parse_WindowEndCondition()
  function try_WindowEndCondition (line 8972) | function try_WindowEndCondition()
  function parse_WindowVars (line 8988) | function parse_WindowVars()
  function try_WindowVars (line 9027) | function try_WindowVars()
  function parse_CurrentItem (line 9060) | function parse_CurrentItem()
  function try_CurrentItem (line 9067) | function try_CurrentItem()
  function parse_PreviousItem (line 9072) | function parse_PreviousItem()
  function try_PreviousItem (line 9079) | function try_PreviousItem()
  function parse_NextItem (line 9084) | function parse_NextItem()
  function try_NextItem (line 9091) | function try_NextItem()
  function parse_CountClause (line 9096) | function parse_CountClause()
  function try_CountClause (line 9108) | function try_CountClause()
  function parse_WhereClause (line 9117) | function parse_WhereClause()
  function try_WhereClause (line 9127) | function try_WhereClause()
  function parse_GroupByClause (line 9134) | function parse_GroupByClause()
  function try_GroupByClause (line 9146) | function try_GroupByClause()
  function parse_GroupingSpecList (line 9155) | function parse_GroupingSpecList()
  function try_GroupingSpecList (line 9174) | function try_GroupingSpecList()
  function parse_GroupingSpec (line 9190) | function parse_GroupingSpec()
  function try_GroupingSpec (line 9414) | function try_GroupingSpec()
  function parse_GroupingVariable (line 9637) | function parse_GroupingVariable()
  function try_GroupingVariable (line 9647) | function try_GroupingVariable()
  function parse_OrderByClause (line 9654) | function parse_OrderByClause()
  function try_OrderByClause (line 9677) | function try_OrderByClause()
  function parse_OrderSpecList (line 9697) | function parse_OrderSpecList()
  function try_OrderSpecList (line 9716) | function try_OrderSpecList()
  function parse_OrderSpec (line 9732) | function parse_OrderSpec()
  function try_OrderSpec (line 9741) | function try_OrderSpec()
  function parse_OrderModifier (line 9747) | function parse_OrderModifier()
  function try_OrderModifier (line 9786) | function try_OrderModifier()
  function parse_ReturnClause (line 9823) | function parse_ReturnClause()
  function try_ReturnClause (line 9833) | function try_ReturnClause()
  function parse_QuantifiedExpr (line 9840) | function parse_QuantifiedExpr()
  function try_QuantifiedExpr (line 9872) | function try_QuantifiedExpr()
  function parse_QuantifiedVarDecl (line 9899) | function parse_QuantifiedVarDecl()
  function try_QuantifiedVarDecl (line 9920) | function try_QuantifiedVarDecl()
  function parse_SwitchExpr (line 9936) | function parse_SwitchExpr()
  function try_SwitchExpr (line 9965) | function try_SwitchExpr()
  function parse_SwitchCaseClause (line 9989) | function parse_SwitchCaseClause()
  function try_SwitchCaseClause (line 10010) | function try_SwitchCaseClause()
  function parse_SwitchCaseOperand (line 10027) | function parse_SwitchCaseOperand()
  function try_SwitchCaseOperand (line 10034) | function try_SwitchCaseOperand()
  function parse_TypeswitchExpr (line 10039) | function parse_TypeswitchExpr()
  function try_TypeswitchExpr (line 10076) | function try_TypeswitchExpr()
  function parse_CaseClause (line 10107) | function parse_CaseClause()
  function try_CaseClause (line 10131) | function try_CaseClause()
  function parse_SequenceTypeUnion (line 10150) | function parse_SequenceTypeUnion()
  function try_SequenceTypeUnion (line 10169) | function try_SequenceTypeUnion()
  function parse_IfExpr (line 10185) | function parse_IfExpr()
  function try_IfExpr (line 10207) | function try_IfExpr()
  function parse_TryCatchExpr (line 10224) | function parse_TryCatchExpr()
  function try_TryCatchExpr (line 10242) | function try_TryCatchExpr()
  function parse_TryClause (line 10257) | function parse_TryClause()
  function try_TryClause (line 10270) | function try_TryClause()
  function parse_TryTargetExpr (line 10280) | function parse_TryTargetExpr()
  function try_TryTargetExpr (line 10287) | function try_TryTargetExpr()
  function parse_CatchClause (line 10292) | function parse_CatchClause()
  function try_CatchClause (line 10307) | function try_CatchClause()
  function parse_CatchErrorList (line 10318) | function parse_CatchErrorList()
  function try_CatchErrorList (line 10337) | function try_CatchErrorList()
  function parse_OrExpr (line 10353) | function parse_OrExpr()
  function try_OrExpr (line 10371) | function try_OrExpr()
  function parse_AndExpr (line 10386) | function parse_AndExpr()
  function try_AndExpr (line 10404) | function try_AndExpr()
  function parse_NotExpr (line 10419) | function parse_NotExpr()
  function try_NotExpr (line 10432) | function try_NotExpr()
  function parse_ComparisonExpr (line 10442) | function parse_ComparisonExpr()
  function try_ComparisonExpr (line 10490) | function try_ComparisonExpr()
  function parse_FTContainsExpr (line 10532) | function parse_FTContainsExpr()
  function try_FTContainsExpr (line 10553) | function try_FTContainsExpr()
  function parse_StringConcatExpr (line 10570) | function parse_StringConcatExpr()
  function try_StringConcatExpr (line 10588) | function try_StringConcatExpr()
  function parse_RangeExpr (line 10603) | function parse_RangeExpr()
  function try_RangeExpr (line 10617) | function try_RangeExpr()
  function parse_AdditiveExpr (line 10628) | function parse_AdditiveExpr()
  function try_AdditiveExpr (line 10654) | function try_AdditiveExpr()
  function parse_MultiplicativeExpr (line 10677) | function parse_MultiplicativeExpr()
  function try_MultiplicativeExpr (line 10711) | function try_MultiplicativeExpr()
  function parse_UnionExpr (line 10742) | function parse_UnionExpr()
  function try_UnionExpr (line 10768) | function try_UnionExpr()
  function parse_IntersectExceptExpr (line 10791) | function parse_IntersectExceptExpr()
  function try_IntersectExceptExpr (line 10818) | function try_IntersectExceptExpr()
  function parse_InstanceofExpr (line 10842) | function parse_InstanceofExpr()
  function try_InstanceofExpr (line 10859) | function try_InstanceofExpr()
  function parse_TreatExpr (line 10873) | function parse_TreatExpr()
  function try_TreatExpr (line 10890) | function try_TreatExpr()
  function parse_CastableExpr (line 10904) | function parse_CastableExpr()
  function try_CastableExpr (line 10921) | function try_CastableExpr()
  function parse_CastExpr (line 10935) | function parse_CastExpr()
  function try_CastExpr (line 10952) | function try_CastExpr()
  function parse_UnaryExpr (line 10966) | function parse_UnaryExpr()
  function try_UnaryExpr (line 10991) | function try_UnaryExpr()
  function parse_ValueExpr (line 11013) | function parse_ValueExpr()
  function try_ValueExpr (line 11041) | function try_ValueExpr()
  function parse_SimpleMapExpr (line 11067) | function parse_SimpleMapExpr()
  function try_SimpleMapExpr (line 11085) | function try_SimpleMapExpr()
  function parse_GeneralComp (line 11100) | function parse_GeneralComp()
  function try_GeneralComp (line 11126) | function try_GeneralComp()
  function parse_ValueComp (line 11150) | function parse_ValueComp()
  function try_ValueComp (line 11176) | function try_ValueComp()
  function parse_NodeComp (line 11200) | function parse_NodeComp()
  function try_NodeComp (line 11217) | function try_NodeComp()
  function parse_ValidateExpr (line 11232) | function parse_ValidateExpr()
  function try_ValidateExpr (line 11261) | function try_ValidateExpr()
  function parse_ValidationMode (line 11285) | function parse_ValidationMode()
  function try_ValidationMode (line 11299) | function try_ValidationMode()
  function parse_ExtensionExpr (line 11311) | function parse_ExtensionExpr()
  function try_ExtensionExpr (line 11335) | function try_ExtensionExpr()
  function parse_Pragma (line 11355) | function parse_Pragma()
  function try_Pragma (line 11377) | function try_Pragma()
  function parse_PathExpr (line 11397) | function parse_PathExpr()
  function try_PathExpr (line 11452) | function try_PathExpr()
  function parse_RelativePathExpr (line 11503) | function parse_RelativePathExpr()
  function try_RelativePathExpr (line 11658) | function try_RelativePathExpr()
  function parse_StepExpr (line 11811) | function parse_StepExpr()
  function try_StepExpr (line 13081) | function try_StepExpr()
  function parse_AxisStep (line 14352) | function parse_AxisStep()
  function try_AxisStep (line 14386) | function try_AxisStep()
  function parse_ForwardStep (line 14417) | function parse_ForwardStep()
  function try_ForwardStep (line 14456) | function try_ForwardStep()
  function parse_ForwardAxis (line 14492) | function parse_ForwardAxis()
  function try_ForwardAxis (line 14535) | function try_ForwardAxis()
  function parse_AbbrevForwardStep (line 14576) | function parse_AbbrevForwardStep()
  function try_AbbrevForwardStep (line 14589) | function try_AbbrevForwardStep()
  function parse_ReverseStep (line 14599) | function parse_ReverseStep()
  function try_ReverseStep (line 14616) | function try_ReverseStep()
  function parse_ReverseAxis (line 14630) | function parse_ReverseAxis()
  function try_ReverseAxis (line 14663) | function try_ReverseAxis()
  function parse_AbbrevReverseStep (line 14694) | function parse_AbbrevReverseStep()
  function try_AbbrevReverseStep (line 14701) | function try_AbbrevReverseStep()
  function parse_NodeTest (line 14706) | function parse_NodeTest()
  function try_NodeTest (line 14746) | function try_NodeTest()
  function parse_NameTest (line 14784) | function parse_NameTest()
  function try_NameTest (line 14798) | function try_NameTest()
  function parse_PostfixExpr (line 14810) | function parse_PostfixExpr()
  function try_PostfixExpr (line 14880) | function try_PostfixExpr()
  function parse_ObjectLookup (line 14946) | function parse_ObjectLookup()
  function try_ObjectLookup (line 14975) | function try_ObjectLookup()
  function parse_ArrayLookup (line 14998) | function parse_ArrayLookup()
  function try_ArrayLookup (line 15013) | function try_ArrayLookup()
  function parse_ArrayUnboxing (line 15025) | function parse_ArrayUnboxing()
  function try_ArrayUnboxing (line 15034) | function try_ArrayUnboxing()
  function parse_ArgumentList (line 15041) | function parse_ArgumentList()
  function try_ArgumentList (line 15067) | function try_ArgumentList()
  function parse_PredicateList (line 15089) | function parse_PredicateList()
  function try_PredicateList (line 15105) | function try_PredicateList()
  function parse_Predicate (line 15118) | function parse_Predicate()
  function try_Predicate (line 15129) | function try_Predicate()
  function parse_Literal (line 15137) | function parse_Literal()
  function try_Literal (line 15158) | function try_Literal()
  function parse_BooleanLiteral (line 15177) | function parse_BooleanLiteral()
  function try_BooleanLiteral (line 15191) | function try_BooleanLiteral()
  function parse_NullLiteral (line 15203) | function parse_NullLiteral()
  function try_NullLiteral (line 15210) | function try_NullLiteral()
  function parse_NumericLiteral (line 15215) | function parse_NumericLiteral()
  function try_NumericLiteral (line 15232) | function try_NumericLiteral()
  function parse_VarRef (line 15247) | function parse_VarRef()
  function try_VarRef (line 15257) | function try_VarRef()
  function parse_VarName (line 15264) | function parse_VarName()
  function try_VarName (line 15271) | function try_VarName()
  function parse_ParenthesizedExpr (line 15276) | function parse_ParenthesizedExpr()
  function try_ParenthesizedExpr (line 15290) | function try_ParenthesizedExpr()
  function parse_ContextItemExpr (line 15301) | function parse_ContextItemExpr()
  function try_ContextItemExpr (line 15308) | function try_ContextItemExpr()
  function parse_OrderedExpr (line 15313) | function parse_OrderedExpr()
  function try_OrderedExpr (line 15326) | function try_OrderedExpr()
  function parse_UnorderedExpr (line 15336) | function parse_UnorderedExpr()
  function try_UnorderedExpr (line 15349) | function try_UnorderedExpr()
  function parse_FunctionCall (line 15359) | function parse_FunctionCall()
  function try_FunctionCall (line 15369) | function try_FunctionCall()
  function parse_Argument (line 15376) | function parse_Argument()
  function try_Argument (line 15390) | function try_Argument()
  function parse_ArgumentPlaceholder (line 15402) | function parse_ArgumentPlaceholder()
  function try_ArgumentPlaceholder (line 15409) | function try_ArgumentPlaceholder()
  function parse_Constructor (line 15414) | function parse_Constructor()
  function try_Constructor (line 15430) | function try_Constructor()
  function parse_DirectConstructor (line 15444) | function parse_DirectConstructor()
  function try_DirectConstructor (line 15461) | function try_DirectConstructor()
  function parse_DirElemConstructor (line 15476) | function parse_DirElemConstructor()
  function try_DirElemConstructor (line 15513) | function try_DirElemConstructor()
  function parse_DirAttributeList (line 15548) | function parse_DirAttributeList()
  function try_DirAttributeList (line 15581) | function try_DirAttributeList()
  function parse_DirAttributeValue (line 15612) | function parse_DirAttributeValue()
  function try_DirAttributeValue (line 15661) | function try_DirAttributeValue()
  function parse_QuotAttrValueContent (line 15708) | function parse_QuotAttrValueContent()
  function try_QuotAttrValueContent (line 15722) | function try_QuotAttrValueContent()
  function parse_AposAttrValueContent (line 15734) | function parse_AposAttrValueContent()
  function try_AposAttrValueContent (line 15748) | function try_AposAttrValueContent()
  function parse_DirElemContent (line 15760) | function parse_DirElemContent()
  function try_DirElemContent (line 15782) | function try_DirElemContent()
  function parse_DirCommentConstructor (line 15802) | function parse_DirCommentConstructor()
  function try_DirCommentConstructor (line 15813) | function try_DirCommentConstructor()
  function parse_DirPIConstructor (line 15822) | function parse_DirPIConstructor()
  function try_DirPIConstructor (line 15840) | function try_DirPIConstructor()
  function parse_ComputedConstructor (line 15856) | function parse_ComputedConstructor()
  function try_ComputedConstructor (line 15885) | function try_ComputedConstructor()
  function parse_CompElemConstructor (line 15912) | function parse_CompElemConstructor()
  function try_CompElemConstructor (line 15942) | function try_CompElemConstructor()
  function parse_CompNamespaceConstructor (line 15967) | function parse_CompNamespaceConstructor()
  function try_CompNamespaceConstructor (line 15994) | function try_CompNamespaceConstructor()
  function parse_Prefix (line 16016) | function parse_Prefix()
  function try_Prefix (line 16023) | function try_Prefix()
  function parse_PrefixExpr (line 16028) | function parse_PrefixExpr()
  function try_PrefixExpr (line 16035) | function try_PrefixExpr()
  function parse_URIExpr (line 16040) | function parse_URIExpr()
  function try_URIExpr (line 16047) | function try_URIExpr()
  function parse_FunctionItemExpr (line 16052) | function parse_FunctionItemExpr()
  function try_FunctionItemExpr (line 16075) | function try_FunctionItemExpr()
  function parse_NamedFunctionRef (line 16096) | function parse_NamedFunctionRef()
  function try_NamedFunctionRef (line 16107) | function try_NamedFunctionRef()
  function parse_InlineFunctionExpr (line 16116) | function parse_InlineFunctionExpr()
  function try_InlineFunctionExpr (line 16153) | function try_InlineFunctionExpr()
  function parse_SingleType (line 16184) | function parse_SingleType()
  function try_SingleType (line 16196) | function try_SingleType()
  function parse_TypeDeclaration (line 16206) | function parse_TypeDeclaration()
  function try_TypeDeclaration (line 16216) | function try_TypeDeclaration()
  function parse_SequenceType (line 16223) | function parse_SequenceType()
  function try_SequenceType (line 16268) | function try_SequenceType()
  function parse_OccurrenceIndicator (line 16310) | function parse_OccurrenceIndicator()
  function try_OccurrenceIndicator (line 16327) | function try_OccurrenceIndicator()
  function parse_ItemType (line 16342) | function parse_ItemType()
  function try_ItemType (line 16753) | function try_ItemType()
  function parse_JSONTest (line 17166) | function parse_JSONTest()
  function try_JSONTest (line 17183) | function try_JSONTest()
  function parse_StructuredItemTest (line 17198) | function parse_StructuredItemTest()
  function try_StructuredItemTest (line 17212) | function try_StructuredItemTest()
  function parse_JSONItemTest (line 17224) | function parse_JSONItemTest()
  function try_JSONItemTest (line 17238) | function try_JSONItemTest()
  function parse_JSONObjectTest (line 17250) | function parse_JSONObjectTest()
  function try_JSONObjectTest (line 17264) | function try_JSONObjectTest()
  function parse_JSONArrayTest (line 17276) | function parse_JSONArrayTest()
  function try_JSONArrayTest (line 17290) | function try_JSONArrayTest()
  function parse_AtomicOrUnionType (line 17302) | function parse_AtomicOrUnionType()
  function try_AtomicOrUnionType (line 17309) | function try_AtomicOrUnionType()
  function parse_KindTest (line 17314) | function parse_KindTest()
  function try_KindTest (line 17352) | function try_KindTest()
  function parse_AnyKindTest (line 17388) | function parse_AnyKindTest()
  function try_AnyKindTest (line 17399) | function try_AnyKindTest()
  function parse_DocumentTest (line 17408) | function parse_DocumentTest()
  function try_DocumentTest (line 17433) | function try_DocumentTest()
  function parse_TextTest (line 17454) | function parse_TextTest()
  function try_TextTest (line 17465) | function try_TextTest()
  function parse_CommentTest (line 17474) | function parse_CommentTest()
  function try_CommentTest (line 17485) | function try_CommentTest()
  function parse_NamespaceNodeTest (line 17494) | function parse_NamespaceNodeTest()
  function try_NamespaceNodeTest (line 17505) | function try_NamespaceNodeTest()
  function parse_PITest (line 17514) | function parse_PITest()
  function try_PITest (line 17538) | function try_PITest()
  function parse_AttributeTest (line 17559) | function parse_AttributeTest()
  function try_AttributeTest (line 17584) | function try_AttributeTest()
  function parse_AttribNameOrWildcard (line 17605) | function parse_AttribNameOrWildcard()
  function try_AttribNameOrWildcard (line 17619) | function try_AttribNameOrWildcard()
  function parse_SchemaAttributeTest (line 17631) | function parse_SchemaAttributeTest()
  function try_SchemaAttributeTest (line 17645) | function try_SchemaAttributeTest()
  function parse_AttributeDeclaration (line 17656) | function parse_AttributeDeclaration()
  function try_AttributeDeclaration (line 17663) | function try_AttributeDeclaration()
  function parse_ElementTest (line 17668) | function parse_ElementTest()
  function try_ElementTest (line 17698) | function try_ElementTest()
  function parse_ElementNameOrWildcard (line 17724) | function parse_ElementNameOrWildcard()
  function try_ElementNameOrWildcard (line 17738) | function try_ElementNameOrWildcard()
  function parse_SchemaElementTest (line 17750) | function parse_SchemaElementTest()
  function try_SchemaElementTest (line 17764) | function try_SchemaElementTest()
  function parse_ElementDeclaration (line 17775) | function parse_ElementDeclaration()
  function try_ElementDeclaration (line 17782) | function try_ElementDeclaration()
  function parse_AttributeName (line 17787) | function parse_AttributeName()
  function try_AttributeName (line 17794) | function try_AttributeName()
  function parse_ElementName (line 17799) | function parse_ElementName()
  function try_ElementName (line 17806) | function try_ElementName()
  function parse_SimpleTypeName (line 17811) | function parse_SimpleTypeName()
  function try_SimpleTypeName (line 17818) | function try_SimpleTypeName()
  function parse_TypeName (line 17823) | function parse_TypeName()
  function try_TypeName (line 17830) | function try_TypeName()
  function parse_FunctionTest (line 17835) | function parse_FunctionTest()
  function try_FunctionTest (line 17889) | function try_FunctionTest()
  function parse_AnyFunctionTest (line 17941) | function parse_AnyFunctionTest()
  function try_AnyFunctionTest (line 17954) | function try_AnyFunctionTest()
  function parse_TypedFunctionTest (line 17965) | function parse_TypedFunctionTest()
  function try_TypedFunctionTest (line 17998) | function try_TypedFunctionTest()
  function parse_ParenthesizedItemType (line 18026) | function parse_ParenthesizedItemType()
  function try_ParenthesizedItemType (line 18038) | function try_ParenthesizedItemType()
  function parse_RevalidationDecl (line 18047) | function parse_RevalidationDecl()
  function parse_InsertExprTargetChoice (line 18068) | function parse_InsertExprTargetChoice()
  function try_InsertExprTargetChoice (line 18099) | function try_InsertExprTargetChoice()
  function parse_InsertExpr (line 18128) | function parse_InsertExpr()
  function try_InsertExpr (line 18152) | function try_InsertExpr()
  function parse_DeleteExpr (line 18171) | function parse_DeleteExpr()
  function try_DeleteExpr (line 18190) | function try_DeleteExpr()
  function parse_ReplaceExpr (line 18206) | function parse_ReplaceExpr()
  function try_ReplaceExpr (line 18229) | function try_ReplaceExpr()
  function parse_RenameExpr (line 18248) | function parse_RenameExpr()
  function try_RenameExpr (line 18264) | function try_RenameExpr()
  function parse_SourceExpr (line 18276) | function parse_SourceExpr()
  function try_SourceExpr (line 18283) | function try_SourceExpr()
  function parse_TargetExpr (line 18288) | function parse_TargetExpr()
  function try_TargetExpr (line 18295) | function try_TargetExpr()
  function parse_NewNameExpr (line 18300) | function parse_NewNameExpr()
  function try_NewNameExpr (line 18307) | function try_NewNameExpr()
  function parse_TransformExpr (line 18312) | function parse_TransformExpr()
  function try_TransformExpr (line 18341) | function try_TransformExpr()
  function parse_TransformSpec (line 18364) | function parse_TransformSpec()
  function try_TransformSpec (line 18379) | function try_TransformSpec()
  function parse_FTSelection (line 18390) | function parse_FTSelection()
  function try_FTSelection (line 18422) | function try_FTSelection()
  function parse_FTWeight (line 18451) | function parse_FTWeight()
  function try_FTWeight (line 18464) | function try_FTWeight()
  function parse_FTOr (line 18474) | function parse_FTOr()
  function try_FTOr (line 18492) | function try_FTOr()
  function parse_FTAnd (line 18507) | function parse_FTAnd()
  function try_FTAnd (line 18525) | function try_FTAnd()
  function parse_FTMildNot (line 18540) | function parse_FTMildNot()
  function try_FTMildNot (line 18561) | function try_FTMildNot()
  function parse_FTUnaryNot (line 18579) | function parse_FTUnaryNot()
  function try_FTUnaryNot (line 18592) | function try_FTUnaryNot()
  function parse_FTPrimaryWithOptions (line 18602) | function parse_FTPrimaryWithOptions()
  function try_FTPrimaryWithOptions (line 18620) | function try_FTPrimaryWithOptions()
  function parse_FTPrimary (line 18634) | function parse_FTPrimary()
  function try_FTPrimary (line 18661) | function try_FTPrimary()
  function parse_FTWords (line 18684) | function parse_FTWords()
  function try_FTWords (line 18699) | function try_FTWords()
  function parse_FTWordsValue (line 18711) | function parse_FTWordsValue()
  function try_FTWordsValue (line 18729) | function try_FTWordsValue()
  function parse_FTExtensionSelection (line 18744) | function parse_FTExtensionSelection()
  function try_FTExtensionSelection (line 18768) | function try_FTExtensionSelection()
  function parse_FTAnyallOption (line 18788) | function parse_FTAnyallOption()
  function try_FTAnyallOption (line 18815) | function try_FTAnyallOption()
  function parse_FTTimes (line 18840) | function parse_FTTimes()
  function try_FTTimes (line 18851) | function try_FTTimes()
  function parse_FTRange (line 18859) | function parse_FTRange()
  function try_FTRange (line 18901) | function try_FTRange()
  function parse_FTPosFilter (line 18936) | function parse_FTPosFilter()
  function try_FTPosFilter (line 18960) | function try_FTPosFilter()
  function parse_FTOrder (line 18982) | function parse_FTOrder()
  function try_FTOrder (line 18989) | function try_FTOrder()
  function parse_FTWindow (line 18994) | function parse_FTWindow()
  function try_FTWindow (line 19006) | function try_FTWindow()
  function parse_FTDistance (line 19014) | function parse_FTDistance()
  function try_FTDistance (line 19026) | function try_FTDistance()
  function parse_FTUnit (line 19034) | function parse_FTUnit()
  function try_FTUnit (line 19051) | function try_FTUnit()
  function parse_FTScope (line 19066) | function parse_FTScope()
  function try_FTScope (line 19083) | function try_FTScope()
  function parse_FTBigUnit (line 19097) | function parse_FTBigUnit()
  function try_FTBigUnit (line 19111) | function try_FTBigUnit()
  function parse_FTContent (line 19123) | function parse_FTContent()
  function try_FTContent (line 19148) | function try_FTContent()
  function parse_FTMatchOptions (line 19171) | function parse_FTMatchOptions()
  function try_FTMatchOptions (line 19189) | function try_FTMatchOptions()
  function parse_FTMatchOption (line 19204) | function parse_FTMatchOption()
  function try_FTMatchOption (line 19248) | function try_FTMatchOption()
  function parse_FTCaseOption (line 19290) | function parse_FTCaseOption()
  function try_FTCaseOption (line 19316) | function try_FTCaseOption()
  function parse_FTDiacriticsOption (line 19340) | function parse_FTDiacriticsOption()
  function try_FTDiacriticsOption (line 19356) | function try_FTDiacriticsOption()
  function parse_FTStemOption (line 19370) | function parse_FTStemOption()
  function try_FTStemOption (line 19386) | function try_FTStemOption()
  function parse_FTThesaurusOption (line 19400) | function parse_FTThesaurusOption()
  function try_FTThesaurusOption (line 19452) | function try_FTThesaurusOption()
  function parse_FTThesaurusID (line 19499) | function parse_FTThesaurusID()
  function try_FTThesaurusID (line 19534) | function try_FTThesaurusID()
  function parse_FTLiteralRange (line 19566) | function parse_FTLiteralRange()
  function try_FTLiteralRange (line 19604) | function try_FTLiteralRange()
  function parse_FTStopWordOption (line 19640) | function parse_FTStopWordOption()
  function try_FTStopWordOption (line 19692) | function try_FTStopWordOption()
  function parse_FTStopWords (line 19739) | function parse_FTStopWords()
  function try_FTStopWords (line 19769) | function try_FTStopWords()
  function parse_FTStopWordsInclExcl (line 19797) | function parse_FTStopWordsInclExcl()
  function try_FTStopWordsInclExcl (line 19814) | function try_FTStopWordsInclExcl()
  function parse_FTLanguageOption (line 19828) | function parse_FTLanguageOption()
  function try_FTLanguageOption (line 19837) | function try_FTLanguageOption()
  function parse_FTWildCardOption (line 19844) | function parse_FTWildCardOption()
  function try_FTWildCardOption (line 19860) | function try_FTWildCardOption()
  function parse_FTExtensionOption (line 19874) | function parse_FTExtensionOption()
  function try_FTExtensionOption (line 19886) | function try_FTExtensionOption()
  function parse_FTIgnoreOption (line 19895) | function parse_FTIgnoreOption()
  function try_FTIgnoreOption (line 19907) | function try_FTIgnoreOption()
  function parse_CollectionDecl (line 19916) | function parse_CollectionDecl()
  function parse_CollectionTypeDecl (line 19932) | function parse_CollectionTypeDecl()
  function parse_IndexName (line 19948) | function parse_IndexName()
  function parse_IndexDomainExpr (line 19955) | function parse_IndexDomainExpr()
  function parse_IndexKeySpec (line 19962) | function parse_IndexKeySpec()
  function parse_IndexKeyExpr (line 19980) | function parse_IndexKeyExpr()
  function parse_IndexKeyTypeDecl (line 19987) | function parse_IndexKeyTypeDecl()
  function parse_AtomicType (line 20005) | function parse_AtomicType()
  function parse_IndexKeyCollation (line 20012) | function parse_IndexKeyCollation()
  function parse_IndexDecl (line 20021) | function parse_IndexDecl()
  function parse_ICDecl (line 20054) | function parse_ICDecl()
  function parse_ICCollection (line 20077) | function parse_ICCollection()
  function parse_ICCollSequence (line 20104) | function parse_ICCollSequence()
  function parse_ICCollSequenceUnique (line 20116) | function parse_ICCollSequenceUnique()
  function parse_ICCollNode (line 20135) | function parse_ICCollNode()
  function parse_ICForeignKey (line 20152) | function parse_ICForeignKey()
  function parse_ICForeignKeySource (line 20166) | function parse_ICForeignKeySource()
  function parse_ICForeignKeyTarget (line 20176) | function parse_ICForeignKeyTarget()
  function parse_ICForeignKeyValues (line 20186) | function parse_ICForeignKeyValues()
  function try_Comment (line 20206) | function try_Comment()
  function try_Whitespace (line 20228) | function try_Whitespace()
  function parse_EQName (line 20240) | function parse_EQName()
  function try_EQName (line 20309) | function try_EQName()
  function parse_FunctionName (line 20376) | function parse_FunctionName()
  function try_FunctionName (line 20747) | function try_FunctionName()
  function parse_NCName (line 21116) | function parse_NCName()
  function try_NCName (line 21535) | function try_NCName()
  function parse_MainModule (line 21952) | function parse_MainModule()
  function parse_Program (line 21961) | function parse_Program()
  function parse_Statements (line 21968) | function parse_Statements()
  function try_Statements (line 22290) | function try_Statements()
  function parse_StatementsAndExpr (line 22610) | function parse_StatementsAndExpr()
  function try_StatementsAndExpr (line 22619) | function try_StatementsAndExpr()
  function parse_StatementsAndOptionalExpr (line 22625) | function parse_StatementsAndOptionalExpr()
  function try_StatementsAndOptionalExpr (line 22638) | function try_StatementsAndOptionalExpr()
  function parse_Statement (line 22648) | function parse_Statement()
  function try_Statement (line 22975) | function try_Statement()
  function parse_ApplyStatement (line 23306) | function parse_ApplyStatement()
  function try_ApplyStatement (line 23314) | function try_ApplyStatement()
  function parse_AssignStatement (line 23320) | function parse_AssignStatement()
  function try_AssignStatement (line 23336) | function try_AssignStatement()
  function parse_BlockStatement (line 23348) | function parse_BlockStatement()
  function try_BlockStatement (line 23362) | function try_BlockStatement()
  function parse_BreakStatement (line 23372) | function parse_BreakStatement()
  function try_BreakStatement (line 23383) | function try_BreakStatement()
  function parse_ContinueStatement (line 23392) | function parse_ContinueStatement()
  function try_ContinueStatement (line 23403) | function try_ContinueStatement()
  function parse_ExitStatement (line 23412) | function parse_ExitStatement()
  function try_ExitStatement (line 23425) | function try_ExitStatement()
  function parse_FLWORStatement (line 23435) | function parse_FLWORStatement()
  function try_FLWORStatement (line 23454) | function try_FLWORStatement()
  function parse_ReturnStatement (line 23469) | function parse_ReturnStatement()
  function try_ReturnStatement (line 23479) | function try_ReturnStatement()
  function parse_IfStatement (line 23486) | function parse_IfStatement()
  function try_IfStatement (line 23509) | function try_IfStatement()
  function parse_SwitchStatement (line 23527) | function parse_SwitchStatement()
  function try_SwitchStatement (line 23557) | function try_SwitchStatement()
  function parse_SwitchCaseStatement (line 23582) | function parse_SwitchCaseStatement()
  function try_SwitchCaseStatement (line 23603) | function try_SwitchCaseStatement()
  function parse_TryCatchStatement (line 23620) | function parse_TryCatchStatement()
  function try_TryCatchStatement (line 23793) | function try_TryCatchStatement()
  function parse_TypeswitchStatement (line 23961) | function parse_TypeswitchStatement()
  function try_TypeswitchStatement (line 23999) | function try_TypeswitchStatement()
  function parse_CaseStatement (line 24031) | function parse_CaseStatement()
  function try_CaseStatement (line 24056) | function try_CaseStatement()
  function parse_VarDeclStatement (line 24076) | function parse_VarDeclStatement()
  function try_VarDeclStatement (line 24140) | function try_VarDeclStatement()
  function parse_WhileStatement (line 24195) | function parse_WhileStatement()
  function try_WhileStatement (line 24211) | function try_WhileStatement()
  function parse_VoidStatement (line 24223) | function parse_VoidStatement()
  function try_VoidStatement (line 24230) | function try_VoidStatement()
  function parse_ExprSingle (line 24235) | function parse_ExprSingle()
  function try_ExprSingle (line 24284) | function try_ExprSingle()
  function parse_ExprSimple (line 24331) | function parse_ExprSimple()
  function try_ExprSimple (line 25140) | function try_ExprSimple()
  function parse_JSONDeleteExpr (line 25958) | function parse_JSONDeleteExpr()
  function try_JSONDeleteExpr (line 26157) | function try_JSONDeleteExpr()
  function parse_JSONInsertExpr (line 26353) | function parse_JSONInsertExpr()
  function try_JSONInsertExpr (line 27090) | function try_JSONInsertExpr()
  function parse_JSONRenameExpr (line 27823) | function parse_JSONRenameExpr()
  function try_JSONRenameExpr (line 28026) | function try_JSONRenameExpr()
  function parse_JSONReplaceExpr (line 28225) | function parse_JSONReplaceExpr()
  function try_JSONReplaceExpr (line 28245) | function try_JSONReplaceExpr()
  function parse_JSONAppendExpr (line 28261) | function parse_JSONAppendExpr()
  function try_JSONAppendExpr (line 28470) | function try_JSONAppendExpr()
  function parse_CommonContent (line 28675) | function parse_CommonContent()
  function try_CommonContent (line 28698) | function try_CommonContent()
  function parse_ContentExpr (line 28719) | function parse_ContentExpr()
  function try_ContentExpr (line 28726) | function try_ContentExpr()
  function parse_CompDocConstructor (line 28731) | function parse_CompDocConstructor()
  function try_CompDocConstructor (line 28741) | function try_CompDocConstructor()
  function parse_CompAttrConstructor (line 28748) | function parse_CompAttrConstructor()
  function try_CompAttrConstructor (line 28814) | function try_CompAttrConstructor()
  function parse_CompPIConstructor (line 28878) | function parse_CompPIConstructor()
  function try_CompPIConstructor (line 28944) | function try_CompPIConstructor()
  function parse_CompCommentConstructor (line 29008) | function parse_CompCommentConstructor()
  function try_CompCommentConstructor (line 29018) | function try_CompCommentConstructor()
  function parse_CompTextConstructor (line 29025) | function parse_CompTextConstructor()
  function try_CompTextConstructor (line 29035) | function try_CompTextConstructor()
  function parse_PrimaryExpr (line 29042) | function parse_PrimaryExpr()
  function try_PrimaryExpr (line 29943) | function try_PrimaryExpr()
  function parse_JSONSimpleObjectUnion (line 30847) | function parse_JSONSimpleObjectUnion()
  function try_JSONSimpleObjectUnion (line 30861) | function try_JSONSimpleObjectUnion()
  function parse_ObjectConstructor (line 30872) | function parse_ObjectConstructor()
  function try_ObjectConstructor (line 30886) | function try_ObjectConstructor()
  function parse_PairConstructorList (line 30897) | function parse_PairConstructorList()
  function try_PairConstructorList (line 30915) | function try_PairConstructorList()
  function parse_PairConstructor (line 30930) | function parse_PairConstructor()
  function try_PairConstructor (line 31281) | function try_PairConstructor()
  function parse_ArrayConstructor (line 31632) | function parse_ArrayConstructor()
  function try_ArrayConstructor (line 31646) | function try_ArrayConstructor()
  function parse_BlockExpr (line 31657) | function parse_BlockExpr()
  function try_BlockExpr (line 31668) | function try_BlockExpr()
  function parse_FunctionDecl (line 31676) | function parse_FunctionDecl()
  function parse_ReturnType (line 31714) | function parse_ReturnType()
  function shift (line 31724) | function shift(t)
  function shiftT (line 31739) | function shiftT(t)
  function skip (line 31752) | function skip(code)
  function whitespace (line 31766) | function whitespace()
  function matchW (line 31775) | function matchW(set)
  function lookahead1W (line 31793) | function lookahead1W(set)
  function lookahead2W (line 31803) | function lookahead2W(set)
  function lookahead1 (line 31814) | function lookahead1(set)
  function lookahead2 (line 31824) | function lookahead2(set)
  function error (line 31835) | function error(b, e, s, l, t)
  function memoize (line 31855) | function memoize(i, e, v)
  function memoized (line 31860) | function memoized(i, e)
  function match (line 31871) | function match(tokenSetId)
  function init (line 32320) | function init(string, parsingEventHandler)
  function reset (line 32333) | function reset(l, b, e)
  function parse_Module (line 32394) | function parse_Module()
  function parse_VersionDecl (line 32432) | function parse_VersionDecl()
  function parse_LibraryModule (line 32462) | function parse_LibraryModule()
  function parse_ModuleDecl (line 32472) | function parse_ModuleDecl()
  function parse_Prolog (line 32491) | function parse_Prolog()
  function parse_Separator (line 32632) | function parse_Separator()
  function parse_Setter (line 32639) | function parse_Setter()
  function parse_BoundarySpaceDecl (line 32716) | function parse_BoundarySpaceDecl()
  function parse_DefaultCollationDecl (line 32734) | function parse_DefaultCollationDecl()
  function try_DefaultCollationDecl (line 32747) | function try_DefaultCollationDecl()
  function parse_BaseURIDecl (line 32758) | function parse_BaseURIDecl()
  function parse_ConstructionDecl (line 32769) | function parse_ConstructionDecl()
  function parse_OrderingModeDecl (line 32787) | function parse_OrderingModeDecl()
  function parse_EmptyOrderDecl (line 32805) | function parse_EmptyOrderDecl()
  function try_EmptyOrderDecl (line 32827) | function try_EmptyOrderDecl()
  function parse_CopyNamespacesDecl (line 32847) | function parse_CopyNamespacesDecl()
  function parse_PreserveMode (line 32864) | function parse_PreserveMode()
  function parse_InheritMode (line 32878) | function parse_InheritMode()
  function parse_DecimalFormatDecl (line 32892) | function parse_DecimalFormatDecl()
  function parse_DFPropertyName (line 32927) | function parse_DFPropertyName()
  function parse_Import (line 32965) | function parse_Import()
  function parse_SchemaImport (line 32987) | function parse_SchemaImport()
  function parse_SchemaPrefix (line 33022) | function parse_SchemaPrefix()
  function parse_ModuleImport (line 33045) | function parse_ModuleImport()
  function parse_NamespaceDecl (line 33084) | function parse_NamespaceDecl()
  function parse_DefaultNamespaceDecl (line 33100) | function parse_DefaultNamespaceDecl()
  function try_DefaultNamespaceDecl (line 33122) | function try_DefaultNamespaceDecl()
  function parse_FTOptionDecl (line 33142) | function parse_FTOptionDecl()
  function parse_AnnotatedDecl (line 33154) | function parse_AnnotatedDecl()
  function parse_CompatibilityAnnotation (line 33202) | function parse_CompatibilityAnnotation()
  function parse_Annotation (line 33209) | function parse_Annotation()
  function try_Annotation (line 33240) | function try_Annotation()
  function parse_VarDecl (line 33266) | function parse_VarDecl()
  function parse_VarValue (line 33304) | function parse_VarValue()
  function parse_VarDefaultValue (line 33311) | function parse_VarDefaultValue()
  function parse_ContextItemDecl (line 33318) | function parse_ContextItemDecl()
  function parse_ParamList (line 33357) | function parse_ParamList()
  function try_ParamList (line 33376) | function try_ParamList()
  function parse_Param (line 33392) | function parse_Param()
  function try_Param (line 33408) | function try_Param()
  function parse_FunctionBody (line 33420) | function parse_FunctionBody()
  function try_FunctionBody (line 33427) | function try_FunctionBody()
  function parse_EnclosedExpr (line 33432) | function parse_EnclosedExpr()
  function try_EnclosedExpr (line 33443) | function try_EnclosedExpr()
  function parse_OptionDecl (line 33451) | function parse_OptionDecl()
  function parse_Expr (line 33465) | function parse_Expr()
  function try_Expr (line 33483) | function try_Expr()
  function parse_FLWORExpr (line 33498) | function parse_FLWORExpr()
  function try_FLWORExpr (line 33517) | function try_FLWORExpr()
  function parse_InitialClause (line 33532) | function parse_InitialClause()
  function try_InitialClause (line 33557) | function try_InitialClause()
  function parse_IntermediateClause (line 33580) | function parse_IntermediateClause()
  function try_IntermediateClause (line 33604) | function try_IntermediateClause()
  function parse_ForClause (line 33626) | function parse_ForClause()
  function try_ForClause (line 33647) | function try_ForClause()
  function parse_ForBinding (line 33664) | function parse_ForBinding()
  function try_ForBinding (line 33703) | function try_ForBinding()
  function parse_AllowingEmpty (line 33734) | function parse_AllowingEmpty()
  function try_AllowingEmpty (line 33743) | function try_AllowingEmpty()
  function parse_PositionalVar (line 33750) | function parse_PositionalVar()
  function try_PositionalVar (line 33762) | function try_PositionalVar()
  function parse_FTScoreVar (line 33771) | function parse_FTScoreVar()
  function try_FTScoreVar (line 33783) | function try_FTScoreVar()
  function parse_LetClause (line 33792) | function parse_LetClause()
  function try_LetClause (line 33813) | function try_LetClause()
  function parse_LetBinding (line 33830) | function parse_LetBinding()
  function try_LetBinding (line 33858) | function try_LetBinding()
  function parse_WindowClause (line 33881) | function parse_WindowClause()
  function try_WindowClause (line 33899) | function try_WindowClause()
  function parse_TumblingWindowClause (line 33913) | function parse_TumblingWindowClause()
  function try_TumblingWindowClause (line 33946) | function try_TumblingWindowClause()
  function parse_SlidingWindowClause (line 33972) | function parse_SlidingWindowClause()
  function try_SlidingWindowClause (line 34001) | function try_SlidingWindowClause()
  function parse_WindowStartCondition (line 34023) | function parse_WindowStartCondition()
  function try_WindowStartCondition (line 34038) | function try_WindowStartCondition()
  function parse_WindowEndCondition (line 34049) | function parse_WindowEndCondition()
  function try_WindowEndCondition (line 34069) | function try_WindowEndCondition()
  function parse_WindowVars (line 34085) | function parse_WindowVars()
  function try_WindowVars (line 34124) | function try_WindowVars()
  function parse_CurrentItem (line 34157) | function parse_CurrentItem()
  function try_CurrentItem (line 34164) | function try_CurrentItem()
  function parse_PreviousItem (line 34169) | function parse_PreviousItem()
  function try_PreviousItem (line 34176) | function try_PreviousItem()
  function parse_NextItem (line 34181) | function parse_NextItem()
  function try_NextItem (line 34188) | function try_NextItem()
  function parse_CountClause (line 34193) | function parse_CountClause()
  function try_CountClause (line 34205) | function try_CountClause()
  function parse_WhereClause (line 34214) | function parse_WhereClause()
  function try_WhereClause (line 34224) | function try_WhereClause()
  function parse_GroupByClause (line 34231) | function parse_GroupByClause()
  function try_GroupByClause (line 34243) | function try_GroupByClause()
  function parse_GroupingSpecList (line 34252) | function parse_GroupingSpecList()
  function try_GroupingSpecList (line 34271) | function try_GroupingSpecList()
  function parse_GroupingSpec (line 34287) | function parse_GroupingSpec()
  function try_GroupingSpec (line 34506) | function try_GroupingSpec()
  function parse_GroupingVariable (line 34724) | function parse_GroupingVariable()
  function try_GroupingVariable (line 34734) | function try_GroupingVariable()
  function parse_OrderByClause (line 34741) | function parse_OrderByClause()
  function try_OrderByClause (line 34764) | function try_OrderByClause()
  function parse_OrderSpecList (line 34784) | function parse_OrderSpecList()
  function try_OrderSpecList (line 34803) | function try_OrderSpecList()
  function parse_OrderSpec (line 34819) | function parse_OrderSpec()
  function try_OrderSpec (line 34828) | function try_OrderSpec()
  function parse_OrderModifier (line 34834) | function parse_OrderModifier()
  function try_OrderModifier (line 34873) | function try_OrderModifier()
  function parse_ReturnClause (line 34910) | function parse_ReturnClause()
  function try_ReturnClause (line 34920) | function try_ReturnClause()
  function parse_QuantifiedExpr (line 34927) | function parse_QuantifiedExpr()
  function try_QuantifiedExpr (line 34959) | function try_QuantifiedExpr()
  function parse_QuantifiedVarDecl (line 34986) | function parse_QuantifiedVarDecl()
  function try_QuantifiedVarDecl (line 35007) | function try_QuantifiedVarDecl()
  function parse_SwitchExpr (line 35023) | function parse_SwitchExpr()
  function try_SwitchExpr (line 35052) | function try_SwitchExpr()
  function parse_SwitchCaseClause (line 35076) | function parse_SwitchCaseClause()
  function try_SwitchCaseClause (line 35097) | function try_SwitchCaseClause()
  function parse_SwitchCaseOperand (line 35114) | function parse_SwitchCaseOperand()
  function try_SwitchCaseOperand (line 35121) | function try_SwitchCaseOperand()
  function parse_TypeswitchExpr (line 35126) | function parse_TypeswitchExpr()
  function try_TypeswitchExpr (line 35163) | function try_TypeswitchExpr()
  function parse_CaseClause (line 35194) | function parse_CaseClause()
  function try_CaseClause (line 35218) | function try_CaseClause()
  function parse_SequenceTypeUnion (line 35237) | function parse_SequenceTypeUnion()
  function try_SequenceTypeUnion (line 35256) | function try_SequenceTypeUnion()
  function parse_IfExpr (line 35272) | function parse_IfExpr()
  function try_IfExpr (line 35294) | function try_IfExpr()
  function parse_TryCatchExpr (line 35311) | function parse_TryCatchExpr()
  function try_TryCatchExpr (line 35329) | function try_TryCatchExpr()
  function parse_TryClause (line 35344) | function parse_TryClause()
  function try_TryClause (line 35357) | function try_TryClause()
  function parse_TryTargetExpr (line 35367) | function parse_TryTargetExpr()
  function try_TryTargetExpr (line 35374) | function try_TryTargetExpr()
  function parse_CatchClause (line 35379) | function parse_CatchClause()
  function try_CatchClause (line 35394) | function try_CatchClause()
  function parse_CatchErrorList (line 35405) | function parse_CatchErrorList()
  function try_CatchErrorList (line 35424) | function try_CatchErrorList()
  function parse_OrExpr (line 35440) | function parse_OrExpr()
  function try_OrExpr (line 35458) | function try_OrExpr()
  function parse_AndExpr (line 35473) | function parse_AndExpr()
  function try_AndExpr (line 35491) | function try_AndExpr()
  function parse_ComparisonExpr (line 35506) | function parse_ComparisonExpr()
  function try_ComparisonExpr (line 35554) | function try_ComparisonExpr()
  function parse_FTContainsExpr (line 35596) | function parse_FTContainsExpr()
  function try_FTContainsExpr (line 35617) | function try_FTContainsExpr()
  function parse_StringConcatExpr (line 35634) | function parse_StringConcatExpr()
  function try_StringConcatExpr (line 35652) | function try_StringConcatExpr()
  function parse_RangeExpr (line 35667) | function parse_RangeExpr()
  function try_RangeExpr (line 35681) | function try_RangeExpr()
  function parse_AdditiveExpr (line 35692) | function parse_AdditiveExpr()
  function try_AdditiveExpr (line 35718) | function try_AdditiveExpr()
  function parse_MultiplicativeExpr (line 35741) | function parse_MultiplicativeExpr()
  function try_MultiplicativeExpr (line 35775) | function try_MultiplicativeExpr()
  function parse_UnionExpr (line 35806) | function parse_UnionExpr()
  function try_UnionExpr (line 35832) | function try_UnionExpr()
  function parse_IntersectExceptExpr (line 35855) | function parse_IntersectExceptExpr()
  function try_IntersectExceptExpr (line 35882) | function try_IntersectExceptExpr()
  function parse_InstanceofExpr (line 35906) | function parse_InstanceofExpr()
  function try_InstanceofExpr (line 35923) | function try_InstanceofExpr()
  function parse_TreatExpr (line 35937) | function parse_TreatExpr()
  function try_TreatExpr (line 35954) | function try_TreatExpr()
  function parse_CastableExpr (line 35968) | function parse_CastableExpr()
  function try_CastableExpr (line 35985) | function try_CastableExpr()
  function parse_CastExpr (line 35999) | function parse_CastExpr()
  function try_CastExpr (line 36016) | function try_CastExpr()
  function parse_UnaryExpr (line 36030) | function parse_UnaryExpr()
  function try_UnaryExpr (line 36055) | function try_UnaryExpr()
  function parse_ValueExpr (line 36077) | function parse_ValueExpr()
  function try_ValueExpr (line 36105) | function try_ValueExpr()
  function parse_SimpleMapExpr (line 36131) | function parse_SimpleMapExpr()
  function try_SimpleMapExpr (line 36149) | function try_SimpleMapExpr()
  function parse_GeneralComp (line 36164) | function parse_GeneralComp()
  function try_GeneralComp (line 36190) | function try_GeneralComp()
  function parse_ValueComp (line 36214) | function parse_ValueComp()
  function try_ValueComp (line 36240) | function try_ValueComp()
  function parse_NodeComp (line 36264) | function parse_NodeComp()
  function try_NodeComp (line 36281) | function try_NodeComp()
  function parse_ValidateExpr (line 36296) | function parse_ValidateExpr()
  function try_ValidateExpr (line 36325) | function try_ValidateExpr()
  function parse_ValidationMode (line 36349) | function parse_ValidationMode()
  function try_ValidationMode (line 36363) | function try_ValidationMode()
  function parse_ExtensionExpr (line 36375) | function parse_ExtensionExpr()
  function try_ExtensionExpr (line 36399) | function try_ExtensionExpr()
  function parse_Pragma (line 36419) | function parse_Pragma()
  function try_Pragma (line 36441) | function try_Pragma()
  function parse_PathExpr (line 36461) | function parse_PathExpr()
  function try_PathExpr (line 36516) | function try_PathExpr()
  function parse_RelativePathExpr (line 36567) | function parse_RelativePathExpr()
  function try_RelativePathExpr (line 36716) | function try_RelativePathExpr()
  function parse_StepExpr (line 36863) | function parse_StepExpr()
  function try_StepExpr (line 37862) | function try_StepExpr()
  function parse_AxisStep (line 38862) | function parse_AxisStep()
  function try_AxisStep (line 38896) | function try_AxisStep()
  function parse_ForwardStep (line 38927) | function parse_ForwardStep()
  function try_ForwardStep (line 38966) | function try_ForwardStep()
  function parse_ForwardAxis (line 39002) | function parse_ForwardAxis()
  function try_ForwardAxis (line 39045) | function try_ForwardAxis()
  function parse_AbbrevForwardStep (line 39086) | function parse_AbbrevForwardStep()
  function try_AbbrevForwardStep (line 39099) | function try_AbbrevForwardStep()
  function parse_ReverseStep (line 39109) | function parse_ReverseStep()
  function try_ReverseStep (line 39126) | function try_ReverseStep()
  function parse_ReverseAxis (line 39140) | function parse_ReverseAxis()
  function try_ReverseAxis (line 39173) | function try_ReverseAxis()
  function parse_AbbrevReverseStep (line 39204) | function parse_AbbrevReverseStep()
  function try_AbbrevReverseStep (line 39211) | function try_AbbrevReverseStep()
  function parse_NodeTest (line 39216) | function parse_NodeTest()
  function try_NodeTest (line 39256) | function try_NodeTest()
  function parse_NameTest (line 39294) | function parse_NameTest()
  function try_NameTest (line 39308) | function try_NameTest()
  function parse_PostfixExpr (line 39320) | function parse_PostfixExpr()
  function try_PostfixExpr (line 39346) | function try_PostfixExpr()
  function parse_ArgumentList (line 39368) | function parse_ArgumentList()
  function try_ArgumentList (line 39394) | function try_ArgumentList()
  function parse_PredicateList (line 39416) | function parse_PredicateList()
  function try_PredicateList (line 39432) | function try_PredicateList()
  function parse_Predicate (line 39445) | function parse_Predicate()
  function try_Predicate (line 39456) | function try_Predicate()
  function parse_Literal (line 39464) | function parse_Literal()
  function try_Literal (line 39478) | function try_Literal()
  function parse_NumericLiteral (line 39490) | function parse_NumericLiteral()
  function try_NumericLiteral (line 39507) | function try_NumericLiteral()
  function parse_VarRef (line 39522) | function parse_VarRef()
  function try_VarRef (line 39532) | function try_VarRef()
  function parse_VarName (line 39539) | function parse_VarName()
  function try_VarName (line 39546) | function try_VarName()
  function parse_ParenthesizedExpr (line 39551) | function parse_ParenthesizedExpr()
  function try_ParenthesizedExpr (line 39565) | function try_ParenthesizedExpr()
  function parse_ContextItemExpr (line 39576) | function parse_ContextItemExpr()
  function try_ContextItemExpr (line 39583) | function try_ContextItemExpr()
  function parse_OrderedExpr (line 39588) | function parse_OrderedExpr()
  function try_OrderedExpr (line 39601) | function try_OrderedExpr()
  function parse_UnorderedExpr (line 39611) | function parse_UnorderedExpr()
  function try_UnorderedExpr (line 39624) | function try_UnorderedExpr()
  function parse_FunctionCall (line 39634) | function parse_FunctionCall()
  function try_FunctionCall (line 39644) | function try_FunctionCall()
  function parse_Argument (line 39651) | function parse_Argument()
  function try_Argument (line 39665) | function try_Argument()
  function parse_ArgumentPlaceholder (line 39677) | function parse_ArgumentPlaceholder()
  function try_ArgumentPlaceholder (line 39684) | function try_ArgumentPlaceholder()
  function parse_Constructor (line 39689) | function parse_Constructor()
  function try_Constructor (line 39705) | function try_Constructor()
  function parse_DirectConstructor (line 39719) | function parse_DirectConstructor()
  function try_DirectConstructor (line 39736) | function try_DirectConstructor()
  function parse_DirElemConstructor (line 39751) | function parse_DirElemConstructor()
  function try_DirElemConstructor (line 39788) | function try_DirElemConstructor()
  function parse_DirAttributeList (line 39823) | function parse_DirAttributeList()
  function try_DirAttributeList (line 39856) | function try_DirAttributeList()
  function parse_DirAttributeValue (line 39887) | function parse_DirAttributeValue()
  function try_DirAttributeValue (line 39936) | function try_DirAttributeValue()
  function parse_QuotAttrValueContent (line 39983) | function parse_QuotAttrValueContent()
  function try_QuotAttrValueContent (line 39997) | function try_QuotAttrValueContent()
  function parse_AposAttrValueContent (line 40009) | function parse_AposAttrValueContent()
  function try_AposAttrValueContent (line 40023) | function try_AposAttrValueContent()
  function parse_DirElemContent (line 40035) | function parse_DirElemContent()
  function try_DirElemContent (line 40057) | function try_DirElemContent()
  function parse_DirCommentConstructor (line 40077) | function parse_DirCommentConstructor()
  function try_DirCommentConstructor (line 40088) | function try_DirCommentConstructor()
  function parse_DirPIConstructor (line 40097) | function parse_DirPIConstructor()
  function try_DirPIConstructor (line 40115) | function try_DirPIConstructor()
  function parse_ComputedConstructor (line 40131) | function parse_ComputedConstructor()
  function try_ComputedConstructor (line 40160) | function try_ComputedConstructor()
  function parse_CompElemConstructor (line 40187) | function parse_CompElemConstructor()
  function try_CompElemConstructor (line 40217) | function try_CompElemConstructor()
  function parse_CompNamespaceConstructor (line 40242) | function parse_CompNamespaceConstructor()
  function try_CompNamespaceConstructor (line 40269) | function try_CompNamespaceConstructor()
  function parse_Prefix (line 40291) | function parse_Prefix()
  function try_Prefix (line 40298) | function try_Prefix()
  function parse_PrefixExpr (line 40303) | function parse_PrefixExpr()
  function try_PrefixExpr (line 40310) | function try_PrefixExpr()
  function parse_URIExpr (line 40315) | function parse_URIExpr()
  function try_URIExpr (line 40322) | function try_URIExpr()
  function parse_FunctionItemExpr (line 40327) | function parse_FunctionItemExpr()
  function try_FunctionItemExpr (line 40350) | function try_FunctionItemExpr()
  function parse_NamedFunctionRef (line 40371) | function parse_NamedFunctionRef()
  function try_NamedFunctionRef (line 40382) | function try_NamedFunctionRef()
  function parse_InlineFunctionExpr (line 40391) | function parse_InlineFunctionExpr()
  function try_InlineFunctionExpr (line 40428) | function try_InlineFunctionExpr()
  function parse_SingleType (line 40459) | function parse_SingleType()
  function try_SingleType (line 40471) | function try_SingleType()
  function parse_TypeDeclaration (line 40481) | function parse_TypeDeclaration()
  function try_TypeDeclaration (line 40491) | function try_TypeDeclaration()
  function parse_SequenceType (line 40498) | function parse_SequenceType()
  function try_SequenceType (line 40536) | function try_SequenceType()
  function parse_OccurrenceIndicator (line 40571) | function parse_OccurrenceIndicator()
  function try_OccurrenceIndicator (line 40588) | function try_OccurrenceIndicator()
  function parse_ItemType (line 40603) | function parse_ItemType()
  function try_ItemType (line 40671) | function try_ItemType()
  function parse_JSONTest (line 40737) | function parse_JSONTest()
  function try_JSONTest (line 40754) | function try_JSONTest()
  function parse_StructuredItemTest (line 40769) | function parse_StructuredItemTest()
  function try_StructuredItemTest (line 40780) | function try_StructuredItemTest()
  function parse_JSONItemTest (line 40789) | function parse_JSONItemTest()
  function try_JSONItemTest (line 40800) | function try_JSONItemTest()
  function parse_JSONObjectTest (line 40809) | function parse_JSONObjectTest()
  function try_JSONObjectTest (line 40820) | function try_JSONObjectTest()
  function parse_JSONArrayTest (line 40829) | function parse_JSONArrayTest()
  function try_JSONArrayTest (line 40840) | function try_JSONArrayTest()
  function parse_AtomicOrUnionType (line 40849) | function parse_AtomicOrUnionType()
  function try_AtomicOrUnionType (line 40856) | function try_AtomicOrUnionType()
  function parse_KindTest (line 40861) | function parse_KindTest()
  function try_KindTest (line 40899) | function try_KindTest()
  function parse_AnyKindTest (line 40935) | function parse_AnyKindTest()
  function try_AnyKindTest (line 40946) | function try_AnyKindTest()
  function parse_DocumentTest (line 40955) | function parse_DocumentTest()
  function try_DocumentTest (line 40980) | function try_DocumentTest()
  function parse_TextTest (line 41001) | function parse_TextTest()
  function try_TextTest (line 41012) | function try_TextTest()
  function parse_CommentTest (line 41021) | function parse_CommentTest()
  function try_CommentTest (line 41032) | function try_CommentTest()
  function parse_NamespaceNodeTest (line 41041) | function parse_NamespaceNodeTest()
  function try_NamespaceNodeTest (line 41052) | function try_NamespaceNodeTest()
  function parse_PITest (line 41061) | function parse_PITest()
  function try_PITest (line 41085) | function try_PITest()
  function parse_AttributeTest (line 41106) | function parse_AttributeTest()
  function try_AttributeTest (line 41131) | function try_AttributeTest()
  function parse_AttribNameOrWildcard (line 41152) | function parse_AttribNameOrWildcard()
  function try_AttribNameOrWildcard (line 41166) | function try_AttribNameOrWildcard()
  function parse_SchemaAttributeTest (line 41178) | function parse_SchemaAttributeTest()
  function try_SchemaAttributeTest (line 41192) | function try_SchemaAttributeTest()
  function parse_AttributeDeclaration (line 41203) | function parse_AttributeDeclaration()
  function try_AttributeDeclaration (line 41210) | function try_AttributeDeclaration()
  function parse_ElementTest (line 41215) | function parse_ElementTest()
  function try_ElementTest (line 41245) | function try_ElementTest()
  function parse_ElementNameOrWildcard (line 41271) | function parse_ElementNameOrWildcard()
  function try_ElementNameOrWildcard (line 41285) | function try_ElementNameOrWildcard()
  function parse_SchemaElementTest (line 41297) | function parse_SchemaElementTest()
  function try_SchemaElementTest (line 41311) | function try_SchemaElementTest()
  function parse_ElementDeclaration (line 41322) | function parse_ElementDeclaration()
  function try_ElementDeclaration (line 41329) | function try_ElementDeclaration()
  function parse_AttributeName (line 41334) | function parse_AttributeName()
  function try_AttributeName (line 41341) | function try_AttributeName()
  function parse_ElementName (line 41346) | function parse_ElementName()
  function try_ElementName (line 41353) | function try_ElementName()
  function parse_SimpleTypeName (line 41358) | function parse_SimpleTypeName()
  function try_SimpleTypeName (line 41365) | function try_SimpleTypeName()
  function parse_TypeName (line 41370) | function parse_TypeName()
  function try_TypeName (line 41377) | function try_TypeName()
  function parse_FunctionTest (line 41382) | function parse_FunctionTest()
  function try_FunctionTest (line 41436) | function try_FunctionTest()
  function parse_AnyFunctionTest (line 41488) | function parse_AnyFunctionTest()
  function try_AnyFunctionTest (line 41501) | function try_AnyFunctionTest()
  function parse_TypedFunctionTest (line 41512) | function parse_TypedFunctionTest()
  function try_TypedFunctionTest (line 41545) | function try_TypedFunctionTest()
  function parse_ParenthesizedItemType (line 41573) | function parse_ParenthesizedItemType()
  function try_ParenthesizedItemType (line 41585) | function try_ParenthesizedItemType()
  function parse_RevalidationDecl (line 41594) | function parse_RevalidationDecl()
  function parse_InsertExprTargetChoice (line 41615) | function parse_InsertExprTargetChoice()
  function try_InsertExprTargetChoice (line 41646) | function try_InsertExprTargetChoice()
  function parse_InsertExpr (line 41675) | function parse_InsertExpr()
  function try_InsertExpr (line 41699) | function try_InsertExpr()
  function parse_DeleteExpr (line 41718) | function parse_DeleteExpr()
  function try_DeleteExpr (line 41737) | function try_DeleteExpr()
  function parse_ReplaceExpr (line 41753) | function parse_ReplaceExpr()
  function try_ReplaceExpr (line 41776) | function try_ReplaceExpr()
  function parse_RenameExpr (line 41795) | function parse_RenameExpr()
  function try_RenameExpr (line 41811) | function try_RenameExpr()
  function parse_SourceExpr (line 41823) | function parse_SourceExpr()
  function try_SourceExpr (line 41830) | function try_SourceExpr()
  function parse_TargetExpr (line 41835) | function parse_TargetExpr()
  function try_TargetExpr (line 41842) | function try_TargetExpr()
  function parse_NewNameExpr (line 41847) | function parse_NewNameExpr()
  function try_NewNameExpr (line 41854) | function try_NewNameExpr()
  function parse_TransformExpr (line 41859) | function parse_TransformExpr()
  function try_TransformExpr (line 41888) | function try_TransformExpr()
  function parse_TransformSpec (line 41911) | function parse_TransformSpec()
  function try_TransformSpec (line 41926) | function try_TransformSpec()
  function parse_FTSelection (line 41937) | function parse_FTSelection()
  function try_FTSelection (line 41969) | function try_FTSelection()
  function parse_FTWeight (line 41998) | function parse_FTWeight()
  function try_FTWeight (line 42011) | function try_FTWeight()
  function parse_FTOr (line 42021) | function parse_FTOr()
  function try_FTOr (line 42039) | function try_FTOr()
  function parse_FTAnd (line 42054) | function parse_FTAnd()
  function try_FTAnd (line 42072) | function try_FTAnd()
  function parse_FTMildNot (line 42087) | function parse_FTMildNot()
  function try_FTMildNot (line 42108) | function try_FTMildNot()
  function parse_FTUnaryNot (line 42126) | function parse_FTUnaryNot()
  function try_FTUnaryNot (line 42139) | function try_FTUnaryNot()
  function parse_FTPrimaryWithOptions (line 42149) | function parse_FTPrimaryWithOptions()
  function try_FTPrimaryWithOptions (line 42167) | function try_FTPrimaryWithOptions()
  function parse_FTPrimary (line 42181) | function parse_FTPrimary()
  function try_FTPrimary (line 42208) | function try_FTPrimary()
  function parse_FTWords (line 42231) | function parse_FTWords()
  function try_FTWords (line 42246) | function try_FTWords()
  function parse_FTWordsValue (line 42258) | function parse_FTWordsValue()
  function try_FTWordsValue (line 42276) | function try_FTWordsValue()
  function parse_FTExtensionSelection (line 42291) | function parse_FTExtensionSelection()
  function try_FTExtensionSelection (line 42315) | function try_FTExtensionSelection()
  function parse_FTAnyallOption (line 42335) | function parse_FTAnyallOption()
  function try_FTAnyallOption (line 42362) | function try_FTAnyallOption()
  function parse_FTTimes (line 42387) | function parse_FTTimes()
  function try_FTTimes (line 42398) | function try_FTTimes()
  function parse_FTRange (line 42406) | function parse_FTRange()
  function try_FTRange (line 42448) | function try_FTRange()
  function parse_FTPosFilter (line 42483) | function parse_FTPosFilter()
  function try_FTPosFilter (line 42507) | function try_FTPosFilter()
  function parse_FTOrder (line 42529) | function parse_FTOrder()
  function try_FTOrder (line 42536) | function try_FTOrder()
  function parse_FTWindow (line 42541) | function parse_FTWindow()
  function try_FTWindow (line 42553) | function try_FTWindow()
  function parse_FTDistance (line 42561) | function parse_FTDistance()
  function try_FTDistance (line 42573) | function try_FTDistance()
  function parse_FTUnit (line 42581) | function parse_FTUnit()
  function try_FTUnit (line 42598) | function try_FTUnit()
  function parse_FTScope (line 42613) | function parse_FTScope()
  function try_FTScope (line 42630) | function try_FTScope()
  function parse_FTBigUnit (line 42644) | function parse_FTBigUnit()
  function try_FTBigUnit (line 42658) | function try_FTBigUnit()
  function parse_FTContent (line 42670) | function parse_FTContent()
  function try_FTContent (line 42695) | function try_FTContent()
  function parse_FTMatchOptions (line 42718) | function parse_FTMatchOptions()
  function try_FTMatchOptions (line 42736) | function try_FTMatchOptions()
  function parse_FTMatchOption (line 42751) | function parse_FTMatchOption()
  function try_FTMatchOption (line 42795) | function try_FTMatchOption()
  function parse_FTCaseOption (line 42837) | function parse_FTCaseOption()
  function try_FTCaseOption (line 42863) | function try_FTCaseOption()
  function parse_FTDiacriticsOption (line 42887) | function parse_FTDiacriticsOption()
  function try_FTDiacriticsOption (line 42903) | function try_FTDiacriticsOption()
  function parse_FTStemOption (line 42917) | function parse_FTStemOption()
  function try_FTStemOption (line 42933) | function try_FTStemOption()
  function parse_FTThesaurusOption (line 42947) | function parse_FTThesaurusOption()
  function try_FTThesaurusOption (line 42999) | function try_FTThesaurusOption()
  function parse_FTThesaurusID (line 43046) | function parse_FTThesaurusID()
  function try_FTThesaurusID (line 43081) | function try_FTThesaurusID()
  function parse_FTLiteralRange (line 43113) | function parse_FTLiteralRange()
  function try_FTLiteralRange (line 43151) | function try_FTLiteralRange()
  function parse_FTStopWordOption (line 43187) | function parse_FTStopWordOption()
  function try_FTStopWordOption (line 43239) | function try_FTStopWordOption()
  function parse_FTStopWords (line 43286) | function parse_FTStopWords()
  function try_FTStopWords (line 43316) | function try_FTStopWords()
  function parse_FTStopWordsInclExcl (line 43344) | function parse_FTStopWordsInclExcl()
  function try_FTStopWordsInclExcl (line 43361) | function try_FTStopWordsInclExcl()
  function parse_FTLanguageOption (line 43375) | function parse_FTLanguageOption()
  function try_FTLanguageOption (line 43384) | function try_FTLanguageOption()
  function parse_FTWildCardOption (line 43391) | function parse_FTWildCardOption()
  function try_FTWildCardOption (line 43407) | function try_FTWildCardOption()
  function parse_FTExtensionOption (line 43421) | function parse_FTExtensionOption()
  function try_FTExtensionOption (line 43433) | function try_FTExtensionOption()
  function parse_FTIgnoreOption (line 43442) | function parse_FTIgnoreOption()
  function try_FTIgnoreOption (line 43454) | function try_FTIgnoreOption()
  function parse_CollectionDecl (line 43463) | function parse_CollectionDecl()
  function parse_CollectionTypeDecl (line 43479) | function parse_CollectionTypeDecl()
  function parse_IndexName (line 43495) | function parse_IndexName()
  function parse_IndexDomainExpr (line 43502) | function parse_IndexDomainExpr()
  function parse_IndexKeySpec (line 43509) | function parse_IndexKeySpec()
  function parse_IndexKeyExpr (line 43527) | function parse_IndexKeyExpr()
  function parse_IndexKeyTypeDecl (line 43534) | function parse_IndexKeyTypeDecl()
  function parse_AtomicType (line 43552) | function parse_AtomicType()
  function parse_IndexKeyCollation (line 43559) | function parse_IndexKeyCollation()
  function parse_IndexDecl (line 43568) | function parse_IndexDecl()
  function parse_ICDecl (line 43601) | function parse_ICDecl()
  function parse_ICCollection (line 43624) | function parse_ICCollection()
  function parse_ICCollSequence (line 43651) | function parse_ICCollSequence()
  function parse_ICCollSequenceUnique (line 43663) | function parse_ICCollSequenceUnique()
  function parse_ICCollNode (line 43682) | function parse_ICCollNode()
  function parse_ICForeignKey (line 43699) | function parse_ICForeignKey()
  function parse_ICForeignKeySource (line 43713) | function parse_ICForeignKeySource()
  function parse_ICForeignKeyTarget (line 43723) | function parse_ICForeignKeyTarget()
  function parse_ICForeignKeyValues (line 43733) | function parse_ICForeignKeyValues()
  function try_Comment (line 43753) | function try_Comment()
  function try_Whitespace (line 43775) | function try_Whitespace()
  function parse_EQName (line 43787) | function parse_EQName()
  function try_EQName (line 43856) | function try_EQName()
  function parse_FunctionName (line 43923) | function parse_FunctionName()
  function try_FunctionName (line 44279) | function try_FunctionName()
  function parse_NCName (line 44633) | function parse_NCName()
  function try_NCName (line 45037) | function try_NCName()
  function parse_MainModule (line 45439) | function parse_MainModule()
  function parse_Program (line 45448) | function parse_Program()
  function parse_Statements (line 45455) | function parse_Statements()
  function try_Statements (line 46446) | function try_Statements()
  function parse_StatementsAndExpr (line 47435) | function parse_StatementsAndExpr()
  function try_StatementsAndExpr (line 47444) | function try_StatementsAndExpr()
  function parse_StatementsAndOptionalExpr (line 47450) | function parse_StatementsAndOptionalExpr()
  function try_StatementsAndOptionalExpr (line 47463) | function try_StatementsAndOptionalExpr()
  function parse_Statement (line 47473) | function parse_Statement()
  function try_Statement (line 48050) | function try_Statement()
  function parse_ApplyStatement (line 48631) | function parse_ApplyStatement()
  function try_ApplyStatement (line 48639) | function try_ApplyStatement()
  function parse_AssignStatement (line 48645) | function parse_AssignStatement()
  function try_AssignStatement (line 48661) | function try_AssignStatement()
  function parse_BlockStatement (line 48673) | function parse_BlockStatement()
  function try_BlockStatement (line 48684) | function try_BlockStatement()
  function parse_BreakStatement (line 48692) | function parse_BreakStatement()
  function try_BreakStatement (line 48703) | function try_BreakStatement()
  function parse_ContinueStatement (line 48712) | function parse_ContinueStatement()
  function try_ContinueStatement (line 48723) | function try_ContinueStatement()
  function parse_ExitStatement (line 48732) | function parse_ExitStatement()
  function try_ExitStatement (line 48745) | function try_ExitStatement()
  function parse_FLWORStatement (line 48755) | function parse_FLWORStatement()
  function try_FLWORStatement (line 48774) | function try_FLWORStatement()
  function parse_ReturnStatement (line 48789) | function parse_ReturnStatement()
  function try_ReturnStatement (line 48799) | function try_ReturnStatement()
  function parse_IfStatement (line 48806) | function parse_IfStatement()
  function try_IfStatement (line 48829) | function try_IfStatement()
  function parse_SwitchStatement (line 48847) | function parse_SwitchStatement()
  function try_SwitchStatement (line 48877) | function try_SwitchStatement()
  function parse_SwitchCaseStatement (line 48902) | function parse_SwitchCaseStatement()
  function try_SwitchCaseStatement (line 48923) | function try_SwitchCaseStatement()
  function parse_TryCatchStatement (line 48940) | function parse_TryCatchStatement()
  function try_TryCatchStatement (line 49135) | function try_TryCatchStatement()
  function parse_TypeswitchStatement (line 49331) | function parse_TypeswitchStatement()
  function try_TypeswitchStatement (line 49369) | function try_TypeswitchStatement()
  function parse_CaseStatement (line 49401) | function parse_CaseStatement()
  function try_CaseStatement (line 49426) | function try_CaseStatement()
  function parse_VarDeclStatement (line 49446) | function parse_VarDeclStatement()
  function try_VarDeclStatement (line 49510) | function try_VarDeclStatement()
  function parse_WhileStatement (line 49565) | function parse_WhileStatement()
  function try_WhileStatement (line 49581) | function try_WhileStatement()
  function parse_VoidStatement (line 49593) | function parse_VoidStatement()
  function try_VoidStatement (line 49600) | function try_VoidStatement()
  function parse_ExprSingle (line 49605) | function parse_ExprSingle()
  function try_ExprSingle (line 49654) | function try_ExprSingle()
  function parse_ExprSimple (line 49701) | function parse_ExprSimple()
  function try_ExprSimple (line 49795) | function try_ExprSimple()
  function parse_JSONDeleteExpr (line 49890) | function parse_JSONDeleteExpr()
  function try_JSONDeleteExpr (line 49902) | function try_JSONDeleteExpr()
  function parse_JSONInsertExpr (line 49911) | function parse_JSONInsertExpr()
  function try_JSONInsertExpr (line 50065) | function try_JSONInsertExpr()
  function parse_JSONRenameExpr (line 50215) | function parse_JSONRenameExpr()
  function try_JSONRenameExpr (line 50231) | function try_JSONRenameExpr()
  function parse_JSONReplaceExpr (line 50243) | function parse_JSONReplaceExpr()
  function try_JSONReplaceExpr (line 50263) | function try_JSONReplaceExpr()
  function parse_JSONAppendExpr (line 50279) | function parse_JSONAppendExpr()
  function try_JSONAppendExpr (line 50295) | function try_JSONAppendExpr()
  function parse_CommonContent (line 50307) | function parse_CommonContent()
  function try_CommonContent (line 50330) | function try_CommonContent()
  function parse_ContentExpr (line 50351) | function parse_ContentExpr()
  function try_ContentExpr (line 50358) | function try_ContentExpr()
  function parse_CompDocConstructor (line 50363) | function parse_CompDocConstructor()
  function try_CompDocConstructor (line 50373) | function try_CompDocConstructor()
  function parse_CompAttrConstructor (line 50380) | function parse_CompAttrConstructor()
  function try_CompAttrConstructor (line 50446) | function try_CompAttrConstructor()
  function parse_CompPIConstructor (line 50510) | function parse_CompPIConstructor()
  function try_CompPIConstructor (line 50576) | function try_CompPIConstructor()
  function parse_CompCommentConstructor (line 50640) | function parse_CompCommentConstructor()
  function try_CompCommentConstructor (line 50650) | function try_CompCommentConstructor()
  function parse_CompTextConstructor (line 50657) | function parse_CompTextConstructor()
  function try_CompTextConstructor (line 50667) | function try_CompTextConstructor()
  function parse_PrimaryExpr (line 50674) | function parse_PrimaryExpr()
  function try_PrimaryExpr (line 51296) | function try_PrimaryExpr()
  function parse_JSONSimpleObjectUnion (line 51919) | function parse_JSONSimpleObjectUnion()
  function try_JSONSimpleObjectUnion (line 51933) | function try_JSONSimpleObjectUnion()
  function parse_ObjectConstructor (line 51944) | function parse_ObjectConstructor()
  function try_ObjectConstructor (line 51958) | function try_ObjectConstructor()
  function parse_PairConstructorList (line 51969) | function parse_PairConstructorList()
  function try_PairConstructorList (line 51987) | function try_PairConstructorList()
  function parse_PairConstructor (line 52002) | function parse_PairConstructor()
  function try_PairConstructor (line 52013) | function try_PairConstructor()
  function parse_ArrayConstructor (line 52021) | function parse_ArrayConstructor()
  function try_ArrayConstructor (line 52035) | function try_ArrayConstructor()
  function parse_BlockExpr (line 52046) | function parse_BlockExpr()
  function try_BlockExpr (line 52057) | function try_BlockExpr()
  function parse_FunctionDecl (line 52065) | function parse_FunctionDecl()
  function parse_ReturnType (line 52103) | function parse_ReturnType()
  function shift (line 52113) | function shift(t)
  function shiftT (line 52128) | function shiftT(t)
  function skip (line 52141) | function skip(code)
  function whitespace (line 52155) | function whitespace()
  function matchW (line 52164) | function matchW(set)
  function lookahead1W (line 52182) | function lookahead1W(set)
  function lookahead2W (line 52192) | function lookahead2W(set)
  function lookahead1 (line 52203) | function lookahead1(set)
  function lookahead2 (line 52213) | function lookahead2(set)
  function error (line 52224) | function error(b, e, s, l, t)
  function memoize (line 52244) | function memoize(i, e, v)
  function memoized (line 52249) | function memoized(i, e)
  function match (line 52260) | function match(tokenSetId)
  function baseCompareAscending (line 53180) | function baseCompareAscending(value, other) {
  function baseFindIndex (line 53203) | function baseFindIndex(array, predicate, fromRight) {
  function baseIndexOf (line 53214) | function baseIndexOf(array, value, fromIndex) {
  function baseIsFunction (line 53228) | function baseIsFunction(value) {
  function baseToString (line 53231) | function baseToString(value) {
  function charsLeftIndex (line 53234) | function charsLeftIndex(string, chars) {
  function charsRightIndex (line 53241) | function charsRightIndex(string, chars) {
  function compareAscending (line 53247) | function compareAscending(object, other) {
  function compareMultiple (line 53250) | function compareMultiple(object, other, orders) {
  function deburrLetter (line 53269) | function deburrLetter(letter) {
  function escapeHtmlChar (line 53272) | function escapeHtmlChar(chr) {
  function escapeRegExpChar (line 53275) | function escapeRegExpChar(chr, leadingChar, whitespaceChar) {
  function escapeStringChar (line 53283) | function escapeStringChar(chr) {
  function indexOfNaN (line 53286) | function indexOfNaN(array, fromIndex, fromRight) {
  function isObjectLike (line 53298) | function isObjectLike(value) {
  function isSpace (line 53301) | function isSpace(charCode) {
  function replaceHolders (line 53305) | function replaceHolders(array, placeholder) {
  function sortedUniq (line 53319) | function sortedUniq(array, iteratee) {
  function trimmedLeftIndex (line 53337) | function trimmedLeftIndex(string) {
  function trimmedRightIndex (line 53344) | function trimmedRightIndex(string) {
  function unescapeHtmlChar (line 53350) | function unescapeHtmlChar(chr) {
  function runInContext (line 53353) | function runInContext(context) {
  function Empty (line 57661) | function Empty() {}
  function makeArray (line 57719) | function makeArray(l) {
  function doesDefinePropertyWork (line 58123) | function doesDefinePropertyWork(object) {
  function toInteger (line 58305) | function toInteger(n) {
  function isPrimitive (line 58315) | function isPrimitive(input) {
  function toPrimitive (line 58326) | function toPrimitive(input) {

FILE: main.js
  function openFile (line 34) | function openFile() {
  function saveFile (line 49) | function saveFile() {
  function changeTheme (line 91) | function changeTheme(data) {
  function changeMode (line 96) | function changeMode(data) {
  method click (line 108) | click() {
  method click (line 114) | click() {
  method click (line 120) | click() {
  method click (line 130) | click() {
  method click (line 136) | click() {
  method click (line 142) | click() {
  method click (line 147) | click() {
  method click (line 152) | click() {
  method click (line 157) | click() {
  method click (line 162) | click() {
  method click (line 167) | click() {
  method click (line 172) | click() {
  method click (line 177) | click() {
  method click (line 182) | click() {
  method click (line 187) | click() {
  method click (line 192) | click() {
  method click (line 197) | click() {
  method click (line 202) | click() {
  method click (line 207) | click() {
  method click (line 212) | click() {
  method click (line 217) | click() {
  method click (line 222) | click() {
  method click (line 227) | click() {
  method click (line 232) | click() {
  method click (line 237) | click() {
  method click (line 246) | click() {
  method click (line 251) | click() {
  method click (line 256) | click() {
  method click (line 261) | click() {
  method click (line 266) | click() {
  method click (line 271) | click() {
  method click (line 276) | click() {
  method click (line 281) | click() {
  method click (line 286) | click() {
  method click (line 291) | click() {
  method click (line 296) | click() {
  method click (line 301) | click() {
  method click (line 306) | click() {
  method click (line 311) | click() {
  method click (line 316) | click() {
  method click (line 321) | click() {
  method click (line 326) | click() {
  method click (line 331) | click() {
  method click (line 336) | click() {
  method click (line 341) | click() {
  method click (line 346) | click() {
  method click (line 351) | click() {
  method click (line 356) | click() {
  method click (line 361) | click() {
  method click (line 366) | click() {
  method click (line 371) | click() {
  method click (line 376) | click() {
  method click (line 381) | click() {
  method click (line 386) | click() {
  method click (line 391) | click() {
  method click (line 396) | click() {
  method click (line 401) | click() {
  method click (line 406) | click() {
  method click (line 411) | click() {
  method click (line 416) | click() {
  method click (line 421) | click() {
  method click (line 426) | click() {
  method click (line 431) | click() {
  method click (line 436) | click() {
  method click (line 441) | click() {
  method click (line 446) | click() {
  method click (line 451) | click() {
  method click (line 456) | click() {
  method click (line 461) | click() {
  method click (line 466) | click() {
  method click (line 471) | click() {
  method click (line 476) | click() {
  method click (line 481) | click() {
  method click (line 486) | click() {
  method click (line 491) | click() {
  method click (line 496) | click() {
  method click (line 501) | click() {
  method click (line 506) | click() {
  method click (line 511) | click() {
  method click (line 516) | click() {
  method click (line 521) | click() {
  method click (line 526) | click() {
  method click (line 531) | click() {
  method click (line 536) | click() {
  method click (line 541) | click() {
  method click (line 546) | click() {
  method click (line 551) | click() {
  method click (line 556) | click() {
  method click (line 561) | click() {
  method click (line 566) | click() {
  method click (line 571) | click() {
  method click (line 576) | click() {
  method click (line 581) | click() {
  method click (line 586) | click() {
  method click (line 591) | click() {
  method click (line 596) | click() {
  method click (line 601) | click() {
  method click (line 606) | click() {
  method click (line 611) | click() {
  method click (line 616) | click() {
  method click (line 621) | click() {
  method click (line 626) | click() {
  method click (line 631) | click() {
  method click (line 636) | click() {
  method click (line 641) | click() {
  method click (line 646) | click() {
  method click (line 651) | click() {
  method click (line 656) | click() {
  method click (line 661) | click() {
  method click (line 666) | click() {
  method click (line 671) | click() {
  method click (line 676) | click() {
  method click (line 681) | click() {
  method click (line 686) | click() {
  method click (line 691) | click() {
  method click (line 696) | click() {
  method click (line 701) | click() {
  method click (line 706) | click() {
  method click (line 711) | click() {
  method click (line 716) | click() {
  method click (line 721) | click() {
  method click (line 726) | click() {
  method click (line 731) | click() {
  method click (line 736) | click() {
  method click (line 741) | click() {
  method click (line 746) | click() {
  method click (line 751) | click() {
  method click (line 756) | click() {
  method click (line 761) | click() {
  method click (line 766) | click() {
  method click (line 771) | click() {
  method click (line 776) | click() {
  method click (line 781) | click() {
  method click (line 786) | click() {
  method click (line 791) | click() {
  method click (line 796) | click() {
  method click (line 801) | click() {
  method click (line 806) | click() {
  method click (line 811) | click() {
  method click (line 816) | click() {
  method click (line 821) | click() {
  method click (line 826) | click() {
  method click (line 831) | click() {
  method click (line 836) | click() {
  method click (line 841) | click() {
  method click (line 846) | click() {
  method click (line 851) | click() {
  method click (line 856) | click() {
  method click (line 861) | click() {
  method click (line 866) | click() {
  method click (line 871) | click() {
  method click (line 876) | click() {
  method click (line 881) | click() {
  method click (line 886) | click() {
  method click (line 891) | click() {
  method click (line 896) | click() {
  method click (line 901) | click() {
  method click (line 906) | click() {
  method click (line 911) | click() {
  method click (line 916) | click() {
  method click (line 921) | click() {
  method click (line 926) | click() {
  method click (line 931) | click() {
  method click (line 936) | click() {
  method click (line 941) | click() {
  method click (line 946) | click() {
  method click (line 951) | click() {
  method click (line 956) | click() {
  method click (line 961) | click() {
  method click (line 966) | click() {
  method click (line 971) | click() {
  method click (line 976) | click() {
  method click (line 981) | click() {
  method click (line 986) | click() {
  method click (line 991) | click() {
  method click (line 996) | click() {
  method click (line 1001) | click() {
  method click (line 1006) | click() {
  method click (line 1011) | click() {
  method click (line 1016) | click() {
  method click (line 1021) | click() {
  method click (line 1026) | click() {
  method click (line 1031) | click() {
  method click (line 1036) | click() {
  method click (line 1041) | click() {
  method click (line 1046) | click() {
  method click (line 1051) | click() {
  method click (line 1056) | click() {
  method click (line 1061) | click() {
  method click (line 1066) | click() {
  method click (line 1071) | click() {
  method click (line 1076) | click() {
  method click (line 1081) | click() {
  method click (line 1094) | click(item, focusedWindow) {
Copy disabled (too large) Download .json
Condensed preview — 205 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,778K chars).
[
  {
    "path": "LICENSE",
    "chars": 1086,
    "preview": "MIT License\r\n\r\nCopyright (c) 2020 MikeC-Cn\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a co"
  },
  {
    "path": "README.md",
    "chars": 1682,
    "preview": "# MiEdit\n\n## 介绍\n\nMiEdit是一款基于[Electron](https://www.electronjs.org/)开发的代码编辑器,简单易用。目前可用版本为```v1.0.1```\n\n![](https://img.sh"
  },
  {
    "path": "ace/ace.js",
    "chars": 735502,
    "preview": "/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All "
  },
  {
    "path": "ace/mode-abap.js",
    "chars": 9404,
    "preview": "ace.define(\"ace/mode/abap_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-abc.js",
    "chars": 9400,
    "preview": "ace.define(\"ace/mode/abc_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-actionscript.js",
    "chars": 24980,
    "preview": "ace.define(\"ace/mode/actionscript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_"
  },
  {
    "path": "ace/mode-ada.js",
    "chars": 4306,
    "preview": "ace.define(\"ace/mode/ada_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-apache_conf.js",
    "chars": 19401,
    "preview": "ace.define(\"ace/mode/apache_conf_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-apex.js",
    "chars": 15661,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-applescript.js",
    "chars": 9907,
    "preview": "ace.define(\"ace/mode/applescript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-aql.js",
    "chars": 4714,
    "preview": "ace.define(\"ace/mode/aql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-asciidoc.js",
    "chars": 14125,
    "preview": "ace.define(\"ace/mode/asciidoc_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rule"
  },
  {
    "path": "ace/mode-asl.js",
    "chars": 16299,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-assembly_x86.js",
    "chars": 12047,
    "preview": "ace.define(\"ace/mode/assembly_x86_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_"
  },
  {
    "path": "ace/mode-autohotkey.js",
    "chars": 67626,
    "preview": "ace.define(\"ace/mode/autohotkey_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_ru"
  },
  {
    "path": "ace/mode-batchfile.js",
    "chars": 8575,
    "preview": "ace.define(\"ace/mode/batchfile_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rul"
  },
  {
    "path": "ace/mode-bro.js",
    "chars": 11370,
    "preview": "ace.define(\"ace/mode/bro_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-c9search.js",
    "chars": 9966,
    "preview": "ace.define(\"ace/mode/c9search_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text"
  },
  {
    "path": "ace/mode-c_cpp.js",
    "chars": 19283,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-cirru.js",
    "chars": 6303,
    "preview": "ace.define(\"ace/mode/cirru_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-clojure.js",
    "chars": 13085,
    "preview": "ace.define(\"ace/mode/clojure_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-cobol.js",
    "chars": 3696,
    "preview": "ace.define(\"ace/mode/cobol_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-coffee.js",
    "chars": 14702,
    "preview": "ace.define(\"ace/mode/coffee_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-coldfusion.js",
    "chars": 105244,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-crystal.js",
    "chars": 24131,
    "preview": "ace.define(\"ace/mode/crystal_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-csharp.js",
    "chars": 16821,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-csound_document.js",
    "chars": 123510,
    "preview": "ace.define(\"ace/mode/csound_preprocessor_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_hig"
  },
  {
    "path": "ace/mode-csound_orchestra.js",
    "chars": 75030,
    "preview": "ace.define(\"ace/mode/csound_preprocessor_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_hig"
  },
  {
    "path": "ace/mode-csound_score.js",
    "chars": 14369,
    "preview": "ace.define(\"ace/mode/csound_preprocessor_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_hig"
  },
  {
    "path": "ace/mode-csp.js",
    "chars": 2283,
    "preview": "ace.define(\"ace/mode/csp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-css.js",
    "chars": 31829,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-curly.js",
    "chars": 103281,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-d.js",
    "chars": 17851,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-dart.js",
    "chars": 25343,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-diff.js",
    "chars": 4765,
    "preview": "ace.define(\"ace/mode/diff_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-django.js",
    "chars": 104112,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-dockerfile.js",
    "chars": 16517,
    "preview": "ace.define(\"ace/mode/sh_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], f"
  },
  {
    "path": "ace/mode-dot.js",
    "chars": 14169,
    "preview": "ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, modu"
  },
  {
    "path": "ace/mode-drools.js",
    "chars": 19141,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-edifact.js",
    "chars": 5446,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-eiffel.js",
    "chars": 5277,
    "preview": "ace.define(\"ace/mode/eiffel_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-ejs.js",
    "chars": 121374,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-elixir.js",
    "chars": 23632,
    "preview": "ace.define(\"ace/mode/elixir_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-elm.js",
    "chars": 9709,
    "preview": "ace.define(\"ace/mode/elm_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-erlang.js",
    "chars": 46731,
    "preview": "ace.define(\"ace/mode/erlang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-forth.js",
    "chars": 11581,
    "preview": "ace.define(\"ace/mode/forth_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-fortran.js",
    "chars": 15406,
    "preview": "ace.define(\"ace/mode/fortran_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-fsharp.js",
    "chars": 10645,
    "preview": "ace.define(\"ace/mode/fsharp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-fsl.js",
    "chars": 8743,
    "preview": "ace.define(\"ace/mode/fsl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-ftl.js",
    "chars": 51372,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-gcode.js",
    "chars": 3170,
    "preview": "ace.define(\"ace/mode/gcode_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-gherkin.js",
    "chars": 4993,
    "preview": "ace.define(\"ace/mode/gherkin_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-gitignore.js",
    "chars": 1817,
    "preview": "ace.define(\"ace/mode/gitignore_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rul"
  },
  {
    "path": "ace/mode-glsl.js",
    "chars": 22410,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-gobstones.js",
    "chars": 44143,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-golang.js",
    "chars": 14165,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-graphqlschema.js",
    "chars": 6878,
    "preview": "ace.define(\"ace/mode/graphqlschema_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight"
  },
  {
    "path": "ace/mode-groovy.js",
    "chars": 38962,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-haml.js",
    "chars": 65539,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-handlebars.js",
    "chars": 104883,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-haskell.js",
    "chars": 17469,
    "preview": "ace.define(\"ace/mode/haskell_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-haskell_cabal.js",
    "chars": 4585,
    "preview": "ace.define(\"ace/mode/haskell_cabal_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight"
  },
  {
    "path": "ace/mode-haxe.js",
    "chars": 12578,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-hjson.js",
    "chars": 11361,
    "preview": "ace.define(\"ace/mode/hjson_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-html.js",
    "chars": 101691,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-html_elixir.js",
    "chars": 127655,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-html_ruby.js",
    "chars": 122134,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-ini.js",
    "chars": 5007,
    "preview": "ace.define(\"ace/mode/ini_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-io.js",
    "chars": 9278,
    "preview": "ace.define(\"ace/mode/io_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], f"
  },
  {
    "path": "ace/mode-jack.js",
    "chars": 11297,
    "preview": "ace.define(\"ace/mode/jack_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-jade.js",
    "chars": 81287,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-java.js",
    "chars": 40678,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-javascript.js",
    "chars": 31788,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-json.js",
    "chars": 10501,
    "preview": "ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-json5.js",
    "chars": 11571,
    "preview": "ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-jsoniq.js",
    "chars": 328199,
    "preview": "ace.define(\"ace/mode/xquery/jsoniq_lexer\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\nmodule.ex"
  },
  {
    "path": "ace/mode-jsp.js",
    "chars": 59863,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-jssm.js",
    "chars": 10809,
    "preview": "ace.define(\"ace/mode/jssm_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-jsx.js",
    "chars": 13693,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-julia.js",
    "chars": 12228,
    "preview": "ace.define(\"ace/mode/julia_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-kotlin.js",
    "chars": 24911,
    "preview": "ace.define(\"ace/mode/kotlin_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-latex.js",
    "chars": 9730,
    "preview": "ace.define(\"ace/mode/latex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-less.js",
    "chars": 36078,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-liquid.js",
    "chars": 110373,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-lisp.js",
    "chars": 3557,
    "preview": "ace.define(\"ace/mode/lisp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-livescript.js",
    "chars": 8550,
    "preview": "ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, modu"
  },
  {
    "path": "ace/mode-logiql.js",
    "chars": 10921,
    "preview": "ace.define(\"ace/mode/logiql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-logtalk.js",
    "chars": 16032,
    "preview": "ace.define(\"ace/mode/logtalk_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-lsl.js",
    "chars": 31902,
    "preview": "ace.define(\"ace/mode/lsl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-lua.js",
    "chars": 15353,
    "preview": "ace.define(\"ace/mode/lua_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-luapage.js",
    "chars": 118689,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-lucene.js",
    "chars": 4904,
    "preview": "ace.define(\"ace/mode/lucene_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-makefile.js",
    "chars": 13448,
    "preview": "ace.define(\"ace/mode/sh_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], f"
  },
  {
    "path": "ace/mode-markdown.js",
    "chars": 124589,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-mask.js",
    "chars": 71994,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-matlab.js",
    "chars": 23450,
    "preview": "ace.define(\"ace/mode/matlab_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-maze.js",
    "chars": 9396,
    "preview": "ace.define(\"ace/mode/maze_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-mel.js",
    "chars": 29167,
    "preview": "ace.define(\"ace/mode/mel_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-mixal.js",
    "chars": 5277,
    "preview": "ace.define(\"ace/mode/mixal_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-mushcode.js",
    "chars": 12376,
    "preview": "ace.define(\"ace/mode/mushcode_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rule"
  },
  {
    "path": "ace/mode-mysql.js",
    "chars": 9014,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-nginx.js",
    "chars": 20522,
    "preview": "ace.define(\"ace/mode/nginx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-nim.js",
    "chars": 12427,
    "preview": "ace.define(\"ace/mode/nim_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-nix.js",
    "chars": 24126,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-nsis.js",
    "chars": 15127,
    "preview": "ace.define(\"ace/mode/nsis_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-nunjucks.js",
    "chars": 107759,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-objectivec.js",
    "chars": 65808,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-ocaml.js",
    "chars": 21779,
    "preview": "ace.define(\"ace/mode/ocaml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-pascal.js",
    "chars": 8121,
    "preview": "ace.define(\"ace/mode/pascal_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-perl.js",
    "chars": 13367,
    "preview": "ace.define(\"ace/mode/perl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-perl6.js",
    "chars": 25120,
    "preview": "ace.define(\"ace/mode/perl6_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-pgsql.js",
    "chars": 87049,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-php.js",
    "chars": 594897,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-php_laravel_blade.js",
    "chars": 602262,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-pig.js",
    "chars": 11176,
    "preview": "ace.define(\"ace/mode/pig_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-plain_text.js",
    "chars": 1086,
    "preview": "ace.define(\"ace/mode/plain_text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/text_highlight_ru"
  },
  {
    "path": "ace/mode-powershell.js",
    "chars": 39162,
    "preview": "ace.define(\"ace/mode/powershell_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_ru"
  },
  {
    "path": "ace/mode-praat.js",
    "chars": 18025,
    "preview": "ace.define(\"ace/mode/praat_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-prolog.js",
    "chars": 14419,
    "preview": "ace.define(\"ace/mode/prolog_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-properties.js",
    "chars": 2394,
    "preview": "ace.define(\"ace/mode/properties_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_ru"
  },
  {
    "path": "ace/mode-protobuf.js",
    "chars": 22537,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-puppet.js",
    "chars": 13120,
    "preview": "ace.define(\"ace/mode/puppet_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-python.js",
    "chars": 15498,
    "preview": "ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-r.js",
    "chars": 10162,
    "preview": "ace.define(\"ace/mode/tex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-razor.js",
    "chars": 114153,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-rdoc.js",
    "chars": 8265,
    "preview": "ace.define(\"ace/mode/latex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"]"
  },
  {
    "path": "ace/mode-red.js",
    "chars": 20315,
    "preview": "ace.define(\"ace/mode/red_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-redshift.js",
    "chars": 14336,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-rhtml.js",
    "chars": 111214,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-rst.js",
    "chars": 5970,
    "preview": "ace.define(\"ace/mode/rst_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-ruby.js",
    "chars": 19218,
    "preview": "ace.define(\"ace/mode/ruby_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-rust.js",
    "chars": 11407,
    "preview": "ace.define(\"ace/mode/rust_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-sass.js",
    "chars": 24397,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-scad.js",
    "chars": 13218,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-scala.js",
    "chars": 39071,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-scheme.js",
    "chars": 7317,
    "preview": "ace.define(\"ace/mode/scheme_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-scss.js",
    "chars": 37845,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-sh.js",
    "chars": 14847,
    "preview": "ace.define(\"ace/mode/sh_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], f"
  },
  {
    "path": "ace/mode-sjs.js",
    "chars": 37895,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-slim.js",
    "chars": 179324,
    "preview": "ace.define(\"ace/mode/slim_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/lib/oop\",\"ace/mode/text_highl"
  },
  {
    "path": "ace/mode-smarty.js",
    "chars": 106773,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-snippets.js",
    "chars": 7211,
    "preview": "ace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range"
  },
  {
    "path": "ace/mode-soy_template.js",
    "chars": 115275,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-space.js",
    "chars": 5122,
    "preview": "ace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range"
  },
  {
    "path": "ace/mode-sparql.js",
    "chars": 12660,
    "preview": "ace.define(\"ace/mode/sparql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-sql.js",
    "chars": 3429,
    "preview": "ace.define(\"ace/mode/sql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-sqlserver.js",
    "chars": 23644,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-stylus.js",
    "chars": 21440,
    "preview": "ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-svg.js",
    "chars": 59018,
    "preview": "ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-swift.js",
    "chars": 13553,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-tcl.js",
    "chars": 12539,
    "preview": "ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode"
  },
  {
    "path": "ace/mode-terraform.js",
    "chars": 13258,
    "preview": "ace.define(\"ace/mode/terraform_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rul"
  },
  {
    "path": "ace/mode-tex.js",
    "chars": 5261,
    "preview": "ace.define(\"ace/mode/tex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_high"
  },
  {
    "path": "ace/mode-text.js",
    "chars": 326,
    "preview": "\n;                (function() {\n                    ace.require([\"ace/mode/text\"], function(m) {\n                       "
  },
  {
    "path": "ace/mode-textile.js",
    "chars": 4290,
    "preview": "ace.define(\"ace/mode/textile_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-toml.js",
    "chars": 4282,
    "preview": "ace.define(\"ace/mode/toml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-tsx.js",
    "chars": 34936,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-turtle.js",
    "chars": 9545,
    "preview": "ace.define(\"ace/mode/turtle_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\""
  },
  {
    "path": "ace/mode-twig.js",
    "chars": 107491,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-typescript.js",
    "chars": 34499,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-vala.js",
    "chars": 27746,
    "preview": "ace.define(\"ace/mode/vala_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-vbscript.js",
    "chars": 7754,
    "preview": "ace.define(\"ace/mode/vbscript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rule"
  },
  {
    "path": "ace/mode-velocity.js",
    "chars": 111041,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-verilog.js",
    "chars": 4557,
    "preview": "ace.define(\"ace/mode/verilog_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules"
  },
  {
    "path": "ace/mode-vhdl.js",
    "chars": 3880,
    "preview": "ace.define(\"ace/mode/vhdl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-visualforce.js",
    "chars": 106031,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-wollok.js",
    "chars": 35764,
    "preview": "ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_r"
  },
  {
    "path": "ace/mode-xml.js",
    "chars": 23993,
    "preview": "ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], "
  },
  {
    "path": "ace/mode-xquery.js",
    "chars": 325406,
    "preview": "ace.define(\"ace/mode/xquery/xquery_lexer\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\nmodule.ex"
  },
  {
    "path": "ace/mode-yaml.js",
    "chars": 10616,
    "preview": "ace.define(\"ace/mode/yaml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/mode-zeek.js",
    "chars": 17056,
    "preview": "ace.define(\"ace/mode/zeek_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],"
  },
  {
    "path": "ace/theme-ambiance.js",
    "chars": 28189,
    "preview": "ace.define(\"ace/theme/ambiance\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpo"
  },
  {
    "path": "ace/theme-chaos.js",
    "chars": 3528,
    "preview": "ace.define(\"ace/theme/chaos\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexports"
  },
  {
    "path": "ace/theme-chrome.js",
    "chars": 3362,
    "preview": "ace.define(\"ace/theme/chrome\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexport"
  },
  {
    "path": "ace/theme-clouds.js",
    "chars": 2665,
    "preview": "ace.define(\"ace/theme/clouds\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexport"
  },
  {
    "path": "ace/theme-cobalt.js",
    "chars": 2970,
    "preview": "ace.define(\"ace/theme/cobalt\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexport"
  },
  {
    "path": "ace/theme-dawn.js",
    "chars": 2846,
    "preview": "ace.define(\"ace/theme/dawn\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexports."
  },
  {
    "path": "ace/theme-dracula.js",
    "chars": 3241,
    "preview": "ace.define(\"ace/theme/dracula\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpor"
  },
  {
    "path": "ace/theme-dreamweaver.js",
    "chars": 3820,
    "preview": "ace.define(\"ace/theme/dreamweaver\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\nex"
  },
  {
    "path": "ace/theme-eclipse.js",
    "chars": 2714,
    "preview": "ace.define(\"ace/theme/eclipse\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use s"
  },
  {
    "path": "ace/theme-github.js",
    "chars": 2784,
    "preview": "ace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexport"
  },
  {
    "path": "ace/theme-gob.js",
    "chars": 2993,
    "preview": "ace.define(\"ace/theme/gob\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexports.i"
  },
  {
    "path": "ace/theme-gruvbox.js",
    "chars": 2224,
    "preview": "ace.define(\"ace/theme/gruvbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpor"
  },
  {
    "path": "ace/theme-iplastic.js",
    "chars": 7112,
    "preview": "ace.define(\"ace/theme/iplastic\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpo"
  },
  {
    "path": "ace/theme-katzenmilch.js",
    "chars": 3765,
    "preview": "ace.define(\"ace/theme/katzenmilch\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\ne"
  },
  {
    "path": "ace/theme-kuroir.js",
    "chars": 2568,
    "preview": "ace.define(\"ace/theme/kuroir\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexport"
  },
  {
    "path": "ace/theme-merbivore.js",
    "chars": 2820,
    "preview": "ace.define(\"ace/theme/merbivore\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexp"
  },
  {
    "path": "ace/theme-monokai.js",
    "chars": 2977,
    "preview": "ace.define(\"ace/theme/monokai\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpor"
  },
  {
    "path": "ace/theme-sqlserver.js",
    "chars": 3565,
    "preview": "ace.define(\"ace/theme/sqlserver\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexp"
  },
  {
    "path": "ace/theme-terminal.js",
    "chars": 3534,
    "preview": "ace.define(\"ace/theme/terminal\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpo"
  },
  {
    "path": "ace/theme-textmate.js",
    "chars": 3274,
    "preview": "ace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use "
  },
  {
    "path": "ace/theme-tomorrow.js",
    "chars": 3166,
    "preview": "ace.define(\"ace/theme/tomorrow\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpo"
  },
  {
    "path": "ace/theme-twilight.js",
    "chars": 3110,
    "preview": "ace.define(\"ace/theme/twilight\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexpo"
  },
  {
    "path": "ace/worker-coffee.js",
    "chars": 370837,
    "preview": "\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n    return;\nif (window"
  },
  {
    "path": "ace/worker-css.js",
    "chars": 297284,
    "preview": "\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n    return;\nif (window"
  },
  {
    "path": "ace/worker-html.js",
    "chars": 337806,
    "preview": "\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n    return;\nif (window"
  },
  {
    "path": "ace/worker-javascript.js",
    "chars": 344804,
    "preview": "\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n    return;\nif (window"
  },
  {
    "path": "ace/worker-json.js",
    "chars": 72411,
    "preview": "\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n    return;\nif (window"
  },
  {
    "path": "ace/worker-lua.js",
    "chars": 105451,
    "preview": "\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n    return;\nif (window"
  },
  {
    "path": "ace/worker-php.js",
    "chars": 150813,
    "preview": "\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n    return;\nif (window"
  }
]

// ... and 5 more files (download for full content)

About this extraction

This page contains the full source code of the MikeC-Cn/MiEdit GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 205 files (12.6 MB), approximately 3.3M tokens, and a symbol index with 2516 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!