From bbd705cd693d083ce87a728d772f6b8b109550e7 Mon Sep 17 00:00:00 2001
From: quexer
Date: Thu, 6 Sep 2012 17:28:24 +0800
Subject: [PATCH 001/165] Update lib/ace/mode/markdown_highlight_rules.js
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
catch both text and "#" as token value for Atx style heading.
todo: handle Setext style heading as well.
---
lib/ace/mode/markdown_highlight_rules.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/ace/mode/markdown_highlight_rules.js b/lib/ace/mode/markdown_highlight_rules.js
index dc332fa6..58919be7 100644
--- a/lib/ace/mode/markdown_highlight_rules.js
+++ b/lib/ace/mode/markdown_highlight_rules.js
@@ -77,9 +77,9 @@ var MarkdownHighlightRules = function() {
regex: "^\\-+(?=\\s*$)"
}, { // header
token : function(value) {
- return "markup.heading." + value.length;
+ return "markup.heading." + value.match(/#/g).length;
},
- regex : "^#{1,6}"
+ regex : "^#{1,6}.+$"
}, github_embed("(?:javascript|js)", "js-"),
github_embed("xml", "xml-"),
github_embed("html", "html-"),
From 5dc5b1d169549e476b76d75c2ca1e15aac66c6f7 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Tue, 11 Sep 2012 17:37:12 -0700
Subject: [PATCH 002/165] Update Readme
---
Readme.md | 60 +++++++++++++++++++++++++++++++------------------------
1 file changed, 34 insertions(+), 26 deletions(-)
diff --git a/Readme.md b/Readme.md
index 1d47bd92..4e66dd3b 100644
--- a/Readme.md
+++ b/Readme.md
@@ -6,12 +6,12 @@ Ace is a standalone code editor written in JavaScript. Our goal is to create a b
Features
--------
-* Syntax highlighting
+* Syntax highlighting for over 40 languages (TextMate/Sublime/_.tmlanguage_ files can be imported)
+* Over 20 themes (TextMate/Sublime/_.tmtheme_ files can be imported)
* Automatic indent and outdent
* An optional command line
-* Handles huge documents (100,000 lines and more are no problem)
-* Fully customizable key bindings including VIM and Emacs modes
-* Themes (TextMate themes can be imported)
+* Handles huge documents (at least check, 4,000,000 lines is the upper limit)
+* Fully customizable key bindings including vim and Emacs modes
* Search and replace with regular expressions
* Highlight matching parentheses
* Toggle between soft tabs and real tabs
@@ -19,8 +19,9 @@ Features
* Drag and drop text using the mouse
* Line wrapping
* Code folding
-* Multiple selections
-* Live syntax checker (currently JavaScript/CoffeeScript/Css/XQuery)
+* Multiple cursors and selections
+* Live syntax checker (currently JavaScript/CoffeeScript/CSS/XQuery)
+* Cut, copy, and paste functionality
Take Ace for a spin!
--------------------
@@ -29,15 +30,6 @@ Check out the Ace live [demo](http://ajaxorg.github.com/ace/build/kitchen-sink.h
If you want, you can use Ace as a textarea replacement thanks to the [Ace Bookmarklet](http://ajaxorg.github.com/ace/build/textarea/editor.html).
-Getting the code
-----------------
-
-Ace is a community project. We actively encourage and support contributions. The Ace source code is hosted on GitHub. It is released under the BSD License. This license is very simple, and is friendly to all kinds of projects, whether open source or not. Take charge of your editor and add your favorite language highlighting and keybindings!
-
-```bash
- git clone git://github.com/ajaxorg/ace.git
-```
-
Embedding Ace
-------------
@@ -82,30 +74,28 @@ By default the editor only supports plain text mode; many other languages are av
```
-Then the mode can be used like this:
+The mode can then be used like this:
```javascript
var JavaScriptMode = require("ace/mode/javascript").Mode;
editor.getSession().setMode(new JavaScriptMode());
```
-and take a look at the one of [included](https://github.com/ajaxorg/ace-builds/blob/master/editor.html) [demos](https://github.com/ajaxorg/ace/blob/master/demo/kitchen-sink/demo.js) of how to use Ace.
-
Documentation
-------------
-You can find api documentation at [http://ajaxorg.github.com/ace/api/index.html](http://ajaxorg.github.com/ace/api/index.html).
+Additional usage information, including events to listen to and extending syntax highlighters, can be found [on the main Ace website](http://ace.ajax.org).
-And a lot more sample code in the [demo app](https://github.com/ajaxorg/ace/blob/master/demo/kitchen-sink/demo.js).
+You can also find API documentation at [http://ajaxorg.github.com/ace/api/index.html](http://ajaxorg.github.com/ace/api/index.html).
-There is also some documentation on the [wiki page](https://github.com/ajaxorg/ace/wiki).
+Also check out the sample code for the kitchen sink [demo app](https://github.com/ajaxorg/ace/blob/master/demo/kitchen-sink/demo.js).
-If you still need help, feel free to drop a mail on the [ace mailing list](http://groups.google.com/group/ace-discuss).
+If you still need help, feel free to drop a mail on the [ace mailing list](http://groups.google.com/group/ace-discuss), or at `irc.freenode.net#ace`.
Running Ace
-----------
-After the checkout Ace works out of the box. No build step is required. To open editor with a file:/// URL see [wiki](https://github.com/ajaxorg/ace/wiki/Running-Ace-from-file:---). Or Simply start bundled mini HTTP server:
+After the checkout Ace works out of the box. No build step is required. To try it out, simply start the bundled mini HTTP server:
```bash
./static.py
@@ -120,16 +110,31 @@ Or using Node.JS
The editor can then be opened at http://localhost:8888/kitchen-sink.html.
-Package Ace
+To open the editor with a file:/// URL see [the wiki](https://github.com/ajaxorg/ace/wiki/Running-Ace-from-a-file:).
+
+Building Ace
-----------
-To package Ace we use the dryice build tool developed by the Mozilla Skywriter team. (see the [wiki](https://github.com/ajaxorg/ace/wiki/Building-ace) for more details)
+You do not generally need to build ACE. The [ace-builds repository](https://github.com/ajaxorg/ace-builds/) endeavours to maintain the latest build, and you can just copy one of _src*_ subdirectories somewhere into your project.
+
+However, all you need is Node.js and npm installed to package ACE. Just run `npm install` in the ace folder to install dependencies:
```bash
npm install
node ./Makefile.dryice.js
```
+To package Ace, we use the dryice build tool developed by the Mozilla Skywriter team. Call `node Makefile.dryice.js` on the command-line to start the packing. This build script accepts the following options
+
+```bash
+-m minify build files with uglify-js
+-nc namespace require and define calls with "ace"
+-bm builds the bookmarklet version
+--target ./path specify relative path for output folder (default value is "./build")
+```
+
+To generate all the files in the ace-builds repository, run `node Makefile.dryice.js full --target ../ace-builds`
+
Running the Unit Tests
----------------------
@@ -151,10 +156,13 @@ Continuous Integration status
This project is tested with [Travis CI](http://travis-ci.org)
[](http://travis-ci.org/ajaxorg/ace)
+
Contributing
------------
-Ace wouldn't be what it is without contributions! Feel free to fork and improve/enhance Ace any way you want. If you feel that the editor or the Ace community will benefit from your changes, please open a pull request. To protect the interests of the Ace contributors and users we require contributors to sign a Contributors License Agreement (CLA) before we pull the changes into the main repository. Our CLA is the simplest of agreements, requiring that the contributions you make to an ajax.org project are only those you're allowed to make. This helps us significantly reduce future legal risk for everyone involved. It is easy, helps everyone, takes ten minutes, and only needs to be completed once. There are two versions of the agreement:
+Ace is a community project and wouldn't be what it is without contributions! We actively encourage and support contributions. The Ace source code is released under the BSD License. This license is very simple, and is friendly to all kinds of projects, whether open source or not. Take charge of your editor and add your favorite language highlighting and keybindings!
+
+Feel free to fork and improve/enhance Ace any way you want. If you feel that the editor or the Ace community will benefit from your changes, please open a pull request. To protect the interests of the Ace contributors and users we require contributors to sign a Contributors License Agreement (CLA) before we pull the changes into the main repository. Our CLA is the simplest of agreements, requiring that the contributions you make to an ajax.org project are only those you're allowed to make. This helps us significantly reduce future legal risk for everyone involved. It is easy, helps everyone, takes ten minutes, and only needs to be completed once. There are two versions of the agreement:
1. [The Individual CLA](https://github.com/ajaxorg/ace/raw/master/doc/Contributor_License_Agreement-v2.pdf): use this version if you're working on an ajax.org in your spare time, or can clearly claim ownership of copyright in what you'll be submitting.
2. [The Corporate CLA](https://github.com/ajaxorg/ace/raw/master/doc/Corporate_Contributor_License_Agreement-v2.pdf): have your corporate lawyer review and submit this if your company is going to be contributing to ajax.org projects
From 4f7c10c21793697f5b3a74f5046d80fb490bb360 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Wed, 12 Sep 2012 12:22:59 -0700
Subject: [PATCH 003/165] Mionr updates to dryice
---
Makefile.dryice.js | 51 +++++++++++++++++++++++++++++-----------------
1 file changed, 32 insertions(+), 19 deletions(-)
diff --git a/Makefile.dryice.js b/Makefile.dryice.js
index f7396e39..de43b0e9 100755
--- a/Makefile.dryice.js
+++ b/Makefile.dryice.js
@@ -55,7 +55,8 @@ function main(args) {
if (type == "minimal") {
buildAce({
compress: args.indexOf("--m") != -1,
- noconflict: args.indexOf("--nc") != -1
+ noconflict: args.indexOf("--nc") != -1,
+ shrinkwrap: args.indexOf("--s") != -1
});
} else if (type == "normal") {
ace();
@@ -68,24 +69,27 @@ function main(args) {
demo();
bookmarklet();
}
-
- console.log("--- Ace Dryice Build Tool ---");
- console.log("");
- console.log("Options:");
- console.log(" normal Runs embedded build of Ace");
- console.log(" demo Runs demo build of Ace");
- console.log(" bm Runs bookmarklet build of Ace");
- console.log(" full all of above");
- console.log("flags:");
- console.log(" -m minify");
- console.log(" -nc namespace require");
- console.log(" --target ./path path to build folder");
- console.log("");
- if (BUILD_DIR)
- console.log(" output generated in " + type + __dirname + "/" + BUILD_DIR)
-
- process.exit(0);
-
+ else {
+ console.log("--- Ace Dryice Build Tool ---");
+ console.log("");
+ console.log("Options:");
+ console.log(" minimal Places all necessary Ace files out in build dir [default]");
+ console.log(" normal Runs four Ace builds--minimal, minimal-noconflict, minimal-min, and minimal-noconflict-min");
+ console.log(" demo Runs demo build of Ace");
+ console.log(" bm Runs bookmarklet build of Ace");
+ console.log(" full all of above");
+ console.log("args:");
+ console.log(" --target ./path path to build folder");
+ console.log("flags: (only valid on minimal builds)");
+ console.log(" --m minify");
+ console.log(" --nc namespace require");
+ console.log(" --s shrinkwrap (combines all output files into one)");
+ console.log("");
+ if (BUILD_DIR)
+ console.log(" output generated in " + type + __dirname + "/" + BUILD_DIR)
+
+ process.exit(0);
+ }
}
function bookmarklet() {
@@ -399,6 +403,15 @@ function buildAce(options) {
});
});
+
+ console.log('# combining files into one ---------');
+
+ if(options.shrinkwrap) {
+ copy({
+ source: { root:targetDir },
+ dest: BUILD_DIR + '/ace-min.js'
+ });
+ }
}
// TODO: replace with project.clone once it is fixed in dryice
From ff4e200dc90a448092413940d5335e72301da945 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Wed, 12 Sep 2012 12:27:11 -0700
Subject: [PATCH 004/165] Update help text
---
Makefile.dryice.js | 76 +++++++++++++++++++++++-----------------------
1 file changed, 38 insertions(+), 38 deletions(-)
diff --git a/Makefile.dryice.js b/Makefile.dryice.js
index de43b0e9..86a2ce81 100755
--- a/Makefile.dryice.js
+++ b/Makefile.dryice.js
@@ -52,44 +52,44 @@ function main(args) {
if (i != -1 && args[i+1])
BUILD_DIR = args[i+1];
- if (type == "minimal") {
- buildAce({
- compress: args.indexOf("--m") != -1,
- noconflict: args.indexOf("--nc") != -1,
- shrinkwrap: args.indexOf("--s") != -1
- });
- } else if (type == "normal") {
- ace();
- } else if (type == "demo") {
- demo();
- } else if (type == "bm") {
- bookmarklet();
- } else if (type == "full") {
- ace();
- demo();
- bookmarklet();
- }
- else {
- console.log("--- Ace Dryice Build Tool ---");
- console.log("");
- console.log("Options:");
- console.log(" minimal Places all necessary Ace files out in build dir [default]");
- console.log(" normal Runs four Ace builds--minimal, minimal-noconflict, minimal-min, and minimal-noconflict-min");
- console.log(" demo Runs demo build of Ace");
- console.log(" bm Runs bookmarklet build of Ace");
- console.log(" full all of above");
- console.log("args:");
- console.log(" --target ./path path to build folder");
- console.log("flags: (only valid on minimal builds)");
- console.log(" --m minify");
- console.log(" --nc namespace require");
- console.log(" --s shrinkwrap (combines all output files into one)");
- console.log("");
- if (BUILD_DIR)
- console.log(" output generated in " + type + __dirname + "/" + BUILD_DIR)
-
- process.exit(0);
+ if (args.indexOf("--h") == -1) {
+ if (type == "minimal") {
+ buildAce({
+ compress: args.indexOf("--m") != -1,
+ noconflict: args.indexOf("--nc") != -1,
+ shrinkwrap: args.indexOf("--s") != -1
+ });
+ } else if (type == "normal") {
+ ace();
+ } else if (type == "demo") {
+ demo();
+ } else if (type == "bm") {
+ bookmarklet();
+ } else if (type == "full") {
+ ace();
+ demo();
+ bookmarklet();
+ }
}
+
+ console.log("--- Ace Dryice Build Tool ---");
+ console.log("");
+ console.log("Options:");
+ console.log(" minimal Places necessary Ace files out in build dir; uses configuration flags below [default]");
+ console.log(" normal Runs four Ace builds--minimal, minimal-noconflict, minimal-min, and minimal-noconflict-min");
+ console.log(" demo Runs demo build of Ace");
+ console.log(" bm Runs bookmarklet build of Ace");
+ console.log(" full all of above");
+ console.log("args:");
+ console.log(" --target ./path path to build folder");
+ console.log("flags:");
+ console.log(" --h print this help");
+ console.log(" --m minify");
+ console.log(" --nc namespace require");
+ console.log(" --s shrinkwrap (combines all output files into one)");
+ console.log("");
+ if (BUILD_DIR)
+ console.log(" output generated in " + type + __dirname + "/" + BUILD_DIR)
}
function bookmarklet() {
@@ -406,7 +406,7 @@ function buildAce(options) {
console.log('# combining files into one ---------');
- if(options.shrinkwrap) {
+ if (options.shrinkwrap) {
copy({
source: { root:targetDir },
dest: BUILD_DIR + '/ace-min.js'
From 5b1c51f03e3288d19ce52978fb397a891dec7bcd Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Wed, 12 Sep 2012 15:47:01 -0700
Subject: [PATCH 005/165] Add exception for workers
---
Makefile.dryice.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.dryice.js b/Makefile.dryice.js
index 86a2ce81..7a80e6a7 100755
--- a/Makefile.dryice.js
+++ b/Makefile.dryice.js
@@ -408,7 +408,7 @@ function buildAce(options) {
if (options.shrinkwrap) {
copy({
- source: { root:targetDir },
+ source: { root:targetDir, exclude:/^worker-/ },
dest: BUILD_DIR + '/ace-min.js'
});
}
From a6fbdb10b867930cb422ab9785c0f9c3f46e9204 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Wed, 12 Sep 2012 15:48:16 -0700
Subject: [PATCH 006/165] Add \-
---
Makefile.dryice.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.dryice.js b/Makefile.dryice.js
index 7a80e6a7..6c55a5bd 100755
--- a/Makefile.dryice.js
+++ b/Makefile.dryice.js
@@ -408,7 +408,7 @@ function buildAce(options) {
if (options.shrinkwrap) {
copy({
- source: { root:targetDir, exclude:/^worker-/ },
+ source: { root:targetDir, exclude:/^worker\-/ },
dest: BUILD_DIR + '/ace-min.js'
});
}
From 7c9cfcaf60269b9f934623c52a9e690aca7fceb8 Mon Sep 17 00:00:00 2001
From: quexer
Date: Thu, 13 Sep 2012 15:18:28 +0800
Subject: [PATCH 007/165] fix bug for atx style header parsing. unittests added
---
lib/ace/mode/markdown_highlight_rules.js | 4 +-
lib/ace/mode/markdown_highlight_rules_test.js | 105 ++++++++++++++++++
2 files changed, 107 insertions(+), 2 deletions(-)
create mode 100644 lib/ace/mode/markdown_highlight_rules_test.js
diff --git a/lib/ace/mode/markdown_highlight_rules.js b/lib/ace/mode/markdown_highlight_rules.js
index 58919be7..4f09c622 100644
--- a/lib/ace/mode/markdown_highlight_rules.js
+++ b/lib/ace/mode/markdown_highlight_rules.js
@@ -77,9 +77,9 @@ var MarkdownHighlightRules = function() {
regex: "^\\-+(?=\\s*$)"
}, { // header
token : function(value) {
- return "markup.heading." + value.match(/#/g).length;
+ return "markup.heading." + value.search(/[^#]/);
},
- regex : "^#{1,6}.+$"
+ regex : "^#{1,6}(?:[^ #].*| +.*(?:[^ #].*|[^ ]+.* +#+ *))$"
}, github_embed("(?:javascript|js)", "js-"),
github_embed("xml", "xml-"),
github_embed("html", "html-"),
diff --git a/lib/ace/mode/markdown_highlight_rules_test.js b/lib/ace/mode/markdown_highlight_rules_test.js
new file mode 100644
index 00000000..2a9ab79e
--- /dev/null
+++ b/lib/ace/mode/markdown_highlight_rules_test.js
@@ -0,0 +1,105 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Ajax.org Code Editor (ACE).
+ *
+ * The Initial Developer of the Original Code is
+ * Ajax.org B.V.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * quexer
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+if (typeof process !== "undefined") {
+ require("amd-loader");
+}
+
+define(function(require, exports, module) {
+"use strict";
+
+var Mode = require("./markdown").Mode;
+var assert = require("../test/assertions");
+
+module.exports = {
+ setUp : function() {
+ this.tokenizer = new Mode().getTokenizer();
+ },
+
+ "test: header 1 ": function() {
+ var tokens = this.tokenizer.getLineTokens("#f", "start").tokens;
+ console.log(tokens);
+ assert.equal(tokens.length, 1);
+ assert.equal(tokens[0].type, 'markup.heading.1');
+ },
+
+ "test: header 2": function() {
+ var tokens = this.tokenizer.getLineTokens("## foo", "start").tokens;
+ console.log(tokens);
+ assert.equal(tokens.length, 1);
+ assert.equal(tokens[0].type, 'markup.heading.2');
+ },
+
+ "test: header ends with ' #'": function() {
+ var tokens = this.tokenizer.getLineTokens("# # # ", "start").tokens;
+ assert.equal(tokens.length, 1);
+ assert.equal(tokens[0].type, 'markup.heading.1');
+ },
+
+ "test: header ends with '#'": function() {
+ var tokens = this.tokenizer.getLineTokens("#foo# ", "start").tokens;
+ console.log(tokens);
+ assert.equal(tokens.length, 1);
+ assert.equal(tokens[0].type, 'markup.heading.1');
+ },
+
+ "test: 6+ #s is not a valid header": function() {
+ var tokens = this.tokenizer.getLineTokens("####### foo", "start").tokens;
+ assert.equal(tokens.length, 1);
+ assert.equal(tokens[0].type, 'text');
+ },
+
+ "test: # followed be only space is not a valid header": function() {
+ var tokens = this.tokenizer.getLineTokens("# ", "start").tokens;
+ assert.equal(tokens.length, 1);
+ assert.equal(tokens[0].type, 'text');
+ },
+
+
+
+ "test: only space between #s is not a valid header": function() {
+ var tokens = this.tokenizer.getLineTokens("# #", "start").tokens;
+ assert.equal(tokens.length, 1);
+ assert.equal(tokens[0].type, 'text');
+ }
+};
+
+});
+
+if (typeof module !== "undefined" && module === require.main) {
+ require("asyncjs").test.testcase(module.exports).exec();
+}
From 90e356be16897463abd7ecb76da318ceb9817c0f Mon Sep 17 00:00:00 2001
From: quexer
Date: Thu, 13 Sep 2012 15:38:08 +0800
Subject: [PATCH 008/165] clean test log
---
lib/ace/mode/markdown_highlight_rules_test.js | 3 ---
1 file changed, 3 deletions(-)
diff --git a/lib/ace/mode/markdown_highlight_rules_test.js b/lib/ace/mode/markdown_highlight_rules_test.js
index 2a9ab79e..2097e60b 100644
--- a/lib/ace/mode/markdown_highlight_rules_test.js
+++ b/lib/ace/mode/markdown_highlight_rules_test.js
@@ -52,14 +52,12 @@ module.exports = {
"test: header 1 ": function() {
var tokens = this.tokenizer.getLineTokens("#f", "start").tokens;
- console.log(tokens);
assert.equal(tokens.length, 1);
assert.equal(tokens[0].type, 'markup.heading.1');
},
"test: header 2": function() {
var tokens = this.tokenizer.getLineTokens("## foo", "start").tokens;
- console.log(tokens);
assert.equal(tokens.length, 1);
assert.equal(tokens[0].type, 'markup.heading.2');
},
@@ -72,7 +70,6 @@ module.exports = {
"test: header ends with '#'": function() {
var tokens = this.tokenizer.getLineTokens("#foo# ", "start").tokens;
- console.log(tokens);
assert.equal(tokens.length, 1);
assert.equal(tokens[0].type, 'markup.heading.1');
},
From 2428ef293e378dee7e832fabf07e22d6cd6bc84d Mon Sep 17 00:00:00 2001
From: Harutyun Amirjanyan
Date: Fri, 14 Sep 2012 00:01:50 +0400
Subject: [PATCH 009/165] update cla email address in readme
---
Readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Readme.md b/Readme.md
index 4e66dd3b..38f6363b 100644
--- a/Readme.md
+++ b/Readme.md
@@ -169,7 +169,7 @@ Feel free to fork and improve/enhance Ace any way you want. If you feel that the
If you want to contribute to an ajax.org project please print the CLA and fill it out and sign it. Then either send it by snail mail or fax to us or send it back scanned (or as a photo) by email.
-Email: fabian.jakobs@web.de
+Email: ace+cla@c9.io
Fax: +31 (0) 206388953
From df4816a769c0ddc5a8453b27054a550862a41f0e Mon Sep 17 00:00:00 2001
From: Irakli Gozalishvili
Date: Thu, 13 Sep 2012 15:20:39 -0700
Subject: [PATCH 010/165] Adding ambiance theme.
---
kitchen-sink.html | 1 +
lib/ace/theme/ambiance.css | 233 +++++++++++++++++++++++++++++++++++++
lib/ace/theme/ambiance.js | 33 ++++++
3 files changed, 267 insertions(+)
create mode 100644 lib/ace/theme/ambiance.css
create mode 100644 lib/ace/theme/ambiance.js
diff --git a/kitchen-sink.html b/kitchen-sink.html
index 825a6194..8ff8298e 100644
--- a/kitchen-sink.html
+++ b/kitchen-sink.html
@@ -88,6 +88,7 @@
Tomorrow Night Bright
Tomorrow Night 80s
Vibrant Ink
+ Ambiance
diff --git a/lib/ace/theme/ambiance.css b/lib/ace/theme/ambiance.css
new file mode 100644
index 00000000..fba5dcc3
--- /dev/null
+++ b/lib/ace/theme/ambiance.css
@@ -0,0 +1,233 @@
+.ace-ambiance {
+ background-color: #202020;
+}
+
+.ace-ambiance .ace_editor {
+ border: 2px solid rgb(159, 159, 159);
+}
+
+.ace-ambiance .ace_editor.ace_focus {
+ border: 2px solid #327fbd;
+}
+
+.ace-ambiance .ace_gutter {
+ background-image: -moz-linear-gradient(left, #3D3D3D, #333);
+ background-image: -ms-linear-gradient(left, #3D3D3D, #333);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3D3D3D), to(#333));
+ background-image: -webkit-linear-gradient(left, #3D3D3D, #333);
+ background-image: -o-linear-gradient(left, #3D3D3D, #333);
+ background-image: linear-gradient(left, #3D3D3D, #333);
+ background-repeat: repeat-x;
+
+ text-shadow: 0px 1px 1px #4d4d4d;
+ color: #222;
+ border-right: 1px solid #4d4d4d;
+ overflow : hidden;
+}
+
+.ace-ambiance .ace_gutter-layer {
+ background: repeat left top;
+ width: 100%;
+ text-align: right;
+}
+
+.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget {
+ position: absolute;
+ right: 2px;
+ margin: 0;
+ vertical-align: middle;
+ height: inherit;
+ width: auto;
+ background: none;
+ border: none;
+ box-shadow: none;
+ outline: none;
+}
+
+.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget:hover {
+ color: #777;
+}
+
+.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget:hover {
+ color: #777;
+}
+
+.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget.open:after {
+ content: '▾'
+}
+
+.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget.closed:after {
+ content: '‣'
+}
+
+.ace-ambiance .ace_print_margin {
+ border-left: 1px dotted #2D2D2D;
+ width: 100%;
+ background: #262626;
+}
+
+.ace-ambiance .ace_scroller {
+ background-color: #202020;
+ -webkit-box-shadow: inset 0 0 10px black;
+ -moz-box-shadow: inset 0 0 10px black;
+ -o-box-shadow: inset 0 0 10px black;
+ box-shadow: inset 0 0 10px black;
+}
+
+.ace-ambiance .ace_text-layer {
+ cursor: text;
+ color: #E6E1DC;
+ background: url("noise.png") repeat left top;
+}
+
+.ace-ambiance .ace_cursor {
+ border-left: 1px solid #7991E8;
+}
+
+.ace-ambiance .ace_cursor.ace_overwrite {
+ border: 1px solid #FFE300;
+ background: #766B13;
+}
+
+.ace-ambiance.normal-mode .ace_cursor-layer {
+ z-index: 0;
+}
+
+.ace-ambiance .ace_marker-layer .ace_selection {
+ background: rgba(221, 240, 255, 0.20);
+}
+
+.ace-ambiance .ace_marker-layer .ace_selected_word {
+ border-radius: 4px;
+ border: 8px solid #3f475d;
+ box-shadow: 0 0 4px black;
+}
+
+.ace-ambiance .ace_marker-layer .ace_step {
+ background: rgb(198, 219, 174);
+}
+
+.ace-ambiance .ace_marker-layer .ace_bracket {
+ margin: -1px 0 0 -1px;
+ border: 1px solid rgba(255, 255, 255, 0.25);
+}
+
+.ace-ambiance .ace_marker-layer .ace_active_line {
+ background: rgba(255, 255, 255, 0.031);
+}
+
+
+
+.ace-ambiance .ace_invisible {
+ color: #333;
+}
+
+.ace-ambiance .ace_paren {
+ color: #24C2C7;
+}
+
+.ace-ambiance .ace_keyword {
+ color: #cda869;
+}
+
+.ace-ambiance .ace_keyword.ace_operator {
+ color: #fa8d6a;
+}
+
+.ace-ambiance .ace_punctuation.ace_operator {
+ color: #fa8d6a;
+}
+
+.ace-ambiance .ace_identifier {
+}
+
+.ace-ambiance .ace-statement {
+ color: #cda869;
+}
+
+.ace-ambiance .ace_constant {
+ color: #CF7EA9;
+}
+
+.ace-ambiance .ace_constant.ace_language {
+ color: #CF7EA9;
+}
+
+.ace-ambiance .ace_constant.ace_library {
+
+}
+
+.ace-ambiance .ace_constant.ace_numeric {
+ color: #78CF8A;
+}
+
+.ace-ambiance .ace_invalid {
+ text-decoration: underline;
+}
+
+.ace-ambiance .ace_invalid.ace_illegal {
+ color:#F8F8F8;
+ background-color: rgba(86, 45, 86, 0.75);
+}
+
+.ace-ambiance .ace_invalid,
+.ace-ambiance .ace_deprecated {
+ text-decoration: underline;
+ font-style: italic;
+ color: #D2A8A1;
+}
+
+.ace-ambiance .ace_support {
+ color: #9B859D;
+}
+
+.ace-ambiance .ace_support.ace_function {
+ color: #DAD085;
+}
+
+.ace-ambiance .ace_function.ace_buildin {
+ color: #9b859d;
+}
+
+.ace-ambiance .ace_string {
+ color: #8f9d6a;
+}
+
+.ace-ambiance .ace_string.ace_regexp {
+ color: #DAD085;
+}
+
+.ace-ambiance .ace_comment {
+ font-style: italic;
+ color: #555;
+}
+
+.ace-ambiance .ace_comment.ace_doc {
+}
+
+.ace-ambiance .ace_comment.ace_doc.ace_tag {
+ color: #666;
+ font-style: normal;
+}
+
+.ace-ambiance .ace_definition,
+.ace-ambiance .ace_type {
+ color: #aac6e3;
+}
+
+.ace-ambiance .ace_variable {
+ color: #9999cc;
+}
+
+.ace-ambiance .ace_variable.ace_language {
+ color: #9b859d;
+}
+
+.ace-ambiance .ace_xml_pe {
+ color: #494949;
+}
+
+.ace-ambiance .ace_gutter-layer,
+.ace-ambiance .ace_text-layer {
+ background-image: url("data:image/png;base64,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");
+}
diff --git a/lib/ace/theme/ambiance.js b/lib/ace/theme/ambiance.js
new file mode 100644
index 00000000..4c74d6f8
--- /dev/null
+++ b/lib/ace/theme/ambiance.js
@@ -0,0 +1,33 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright 2011 Irakli Gozalishvili. All rights reserved.
+ * 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.
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+exports.isDark = true;
+exports.cssClass = "ace-ambiance";
+exports.cssText = require("ace/requirejs/text!./ambiance.css");
+
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
+
+});
From 1aed6fc7aedc7c77c5b7476e829bae0e335857ae Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Thu, 13 Sep 2012 20:00:21 -0700
Subject: [PATCH 011/165] Update Readme.md
---
Readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Readme.md b/Readme.md
index 38f6363b..f9ec20d1 100644
--- a/Readme.md
+++ b/Readme.md
@@ -10,7 +10,7 @@ Features
* Over 20 themes (TextMate/Sublime/_.tmtheme_ files can be imported)
* Automatic indent and outdent
* An optional command line
-* Handles huge documents (at least check, 4,000,000 lines is the upper limit)
+* Handles huge documents (at last check, 4,000,000 lines is the upper limit)
* Fully customizable key bindings including vim and Emacs modes
* Search and replace with regular expressions
* Highlight matching parentheses
From ec524419ceeed0c16786c159e6c53d16620783fb Mon Sep 17 00:00:00 2001
From: nightwing
Date: Fri, 31 Aug 2012 14:02:02 +0400
Subject: [PATCH 012/165] update worker dependencies
---
lib/ace/mode/coffee/helpers.js | 29 +-
lib/ace/mode/coffee/lexer.js | 204 ++-
lib/ace/mode/coffee/nodes.js | 714 ++++++---
lib/ace/mode/coffee/parser.js | 555 ++++---
lib/ace/mode/coffee/rewriter.js | 90 +-
lib/ace/mode/coffee/scope.js | 59 +-
lib/ace/mode/css/csslint.js | 310 ++--
lib/ace/worker/jshint.js | 2546 +++++++++++++++++--------------
tool/update_deps.js | 16 +-
9 files changed, 2703 insertions(+), 1820 deletions(-)
diff --git a/lib/ace/mode/coffee/helpers.js b/lib/ace/mode/coffee/helpers.js
index 69c55bc6..88473f54 100644
--- a/lib/ace/mode/coffee/helpers.js
+++ b/lib/ace/mode/coffee/helpers.js
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 2011 Jeremy Ashkenas
+/**
+ * Copyright (c) 2009-2012 Jeremy Ashkenas
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
@@ -24,9 +24,9 @@
*/
define(function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
+// Generated by CoffeeScript 1.3.3
- var extend, flatten;
+ var extend, flatten, _ref;
exports.starts = function(string, literal, start) {
return literal === string.substr(start, literal.length);
@@ -43,7 +43,9 @@ define(function(require, exports, module) {
_results = [];
for (_i = 0, _len = array.length; _i < _len; _i++) {
item = array[_i];
- if (item) _results.push(item);
+ if (item) {
+ _results.push(item);
+ }
}
return _results;
};
@@ -51,7 +53,9 @@ define(function(require, exports, module) {
exports.count = function(string, substr) {
var num, pos;
num = pos = 0;
- if (!substr.length) return 1 / 0;
+ if (!substr.length) {
+ return 1 / 0;
+ }
while (pos = 1 + string.indexOf(substr, pos)) {
num++;
}
@@ -96,5 +100,16 @@ define(function(require, exports, module) {
return array[array.length - (back || 0) - 1];
};
+ exports.some = (_ref = Array.prototype.some) != null ? _ref : function(fn) {
+ var e, _i, _len;
+ for (_i = 0, _len = this.length; _i < _len; _i++) {
+ e = this[_i];
+ if (fn(e)) {
+ return true;
+ }
+ }
+ return false;
+ };
-});
+
+});
\ No newline at end of file
diff --git a/lib/ace/mode/coffee/lexer.js b/lib/ace/mode/coffee/lexer.js
index be857984..ec661c28 100644
--- a/lib/ace/mode/coffee/lexer.js
+++ b/lib/ace/mode/coffee/lexer.js
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 2011 Jeremy Ashkenas
+/**
+ * Copyright (c) 2009-2012 Jeremy Ashkenas
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
@@ -24,7 +24,7 @@
*/
define(function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
+// Generated by CoffeeScript 1.3.3
var BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HEREDOC, HEREDOC_ILLEGAL, HEREDOC_INDENT, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDEXABLE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LINE_BREAK, LINE_CONTINUER, LOGIC, Lexer, MATH, MULTILINER, MULTI_DENT, NOT_REGEX, NOT_SPACED_REGEX, NUMBER, OPERATOR, REGEX, RELATION, RESERVED, Rewriter, SHIFT, SIMPLESTR, STRICT_PROSCRIBED, TRAILING_SPACES, UNARY, WHITESPACE, compact, count, key, last, starts, _ref, _ref1,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
@@ -35,14 +35,16 @@ define(function(require, exports, module) {
exports.Lexer = Lexer = (function() {
- Lexer.name = 'Lexer';
-
function Lexer() {}
Lexer.prototype.tokenize = function(code, opts) {
var i, tag;
- if (opts == null) opts = {};
- if (WHITESPACE.test(code)) code = "\n" + code;
+ if (opts == null) {
+ opts = {};
+ }
+ if (WHITESPACE.test(code)) {
+ code = "\n" + code;
+ }
code = code.replace(/\r/g, '').replace(TRAILING_SPACES, '');
this.code = code;
this.line = opts.line || 0;
@@ -57,14 +59,20 @@ define(function(require, exports, module) {
i += this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.heredocToken() || this.stringToken() || this.numberToken() || this.regexToken() || this.jsToken() || this.literalToken();
}
this.closeIndentation();
- if (tag = this.ends.pop()) this.error("missing " + tag);
- if (opts.rewrite === false) return this.tokens;
+ if (tag = this.ends.pop()) {
+ this.error("missing " + tag);
+ }
+ if (opts.rewrite === false) {
+ return this.tokens;
+ }
return (new Rewriter).rewrite(this.tokens);
};
Lexer.prototype.identifierToken = function() {
var colon, forcedIdentifier, id, input, match, prev, tag, _ref2, _ref3;
- if (!(match = IDENTIFIER.exec(this.chunk))) return 0;
+ if (!(match = IDENTIFIER.exec(this.chunk))) {
+ return 0;
+ }
input = match[0], id = match[1], colon = match[2];
if (id === 'own' && this.tag() === 'FOR') {
this.token('OWN', id);
@@ -105,7 +113,9 @@ define(function(require, exports, module) {
}
}
if (!forcedIdentifier) {
- if (__indexOf.call(COFFEE_ALIASES, id) >= 0) id = COFFEE_ALIAS_MAP[id];
+ if (__indexOf.call(COFFEE_ALIASES, id) >= 0) {
+ id = COFFEE_ALIAS_MAP[id];
+ }
tag = (function() {
switch (id) {
case '!':
@@ -118,8 +128,6 @@ define(function(require, exports, module) {
return 'LOGIC';
case 'true':
case 'false':
- case 'null':
- case 'undefined':
return 'BOOL';
case 'break':
case 'continue':
@@ -130,29 +138,33 @@ define(function(require, exports, module) {
})();
}
this.token(tag, id);
- if (colon) this.token(':', ':');
+ if (colon) {
+ this.token(':', ':');
+ }
return input.length;
};
Lexer.prototype.numberToken = function() {
var binaryLiteral, lexedLength, match, number, octalLiteral;
- if (!(match = NUMBER.exec(this.chunk))) return 0;
+ if (!(match = NUMBER.exec(this.chunk))) {
+ return 0;
+ }
number = match[0];
- if (/E/.test(number)) {
- this.error("exponential notation '" + number + "' must be indicated with a lowercase 'e'");
- } else if (/[BOX]/.test(number)) {
+ if (/^0[BOX]/.test(number)) {
this.error("radix prefix '" + number + "' must be lowercase");
- } else if (/^0[89]/.test(number)) {
+ } else if (/E/.test(number) && !/^0x/.test(number)) {
+ this.error("exponential notation '" + number + "' must be indicated with a lowercase 'e'");
+ } else if (/^0\d*[89]/.test(number)) {
this.error("decimal literal '" + number + "' must not be prefixed with '0'");
- } else if (/^0[0-7]/.test(number)) {
+ } else if (/^0\d+/.test(number)) {
this.error("octal literal '" + number + "' must be prefixed with '0o'");
}
lexedLength = number.length;
- if (octalLiteral = /0o([0-7]+)/.exec(number)) {
- number = (parseInt(octalLiteral[1], 8)).toString();
+ if (octalLiteral = /^0o([0-7]+)/.exec(number)) {
+ number = '0x' + (parseInt(octalLiteral[1], 8)).toString(16);
}
- if (binaryLiteral = /0b([01]+)/.exec(number)) {
- number = (parseInt(binaryLiteral[1], 2)).toString();
+ if (binaryLiteral = /^0b([01]+)/.exec(number)) {
+ number = '0x' + (parseInt(binaryLiteral[1], 2)).toString(16);
}
this.token('NUMBER', number);
return lexedLength;
@@ -162,11 +174,15 @@ define(function(require, exports, module) {
var match, octalEsc, string;
switch (this.chunk.charAt(0)) {
case "'":
- if (!(match = SIMPLESTR.exec(this.chunk))) return 0;
+ if (!(match = SIMPLESTR.exec(this.chunk))) {
+ return 0;
+ }
this.token('STRING', (string = match[0]).replace(MULTILINER, '\\\n'));
break;
case '"':
- if (!(string = this.balancedString(this.chunk, '"'))) return 0;
+ if (!(string = this.balancedString(this.chunk, '"'))) {
+ return 0;
+ }
if (0 < string.indexOf('#{', 1)) {
this.interpolateString(string.slice(1, -1));
} else {
@@ -176,7 +192,7 @@ define(function(require, exports, module) {
default:
return 0;
}
- if (octalEsc = /^(?:\\.|[^\\])*\\[0-7]/.test(string)) {
+ if (octalEsc = /^(?:\\.|[^\\])*\\(?:0[0-7]|[1-7])/.test(string)) {
this.error("octal escape sequences " + string + " are not allowed");
}
this.line += count(string, '\n');
@@ -185,7 +201,9 @@ define(function(require, exports, module) {
Lexer.prototype.heredocToken = function() {
var doc, heredoc, match, quote;
- if (!(match = HEREDOC.exec(this.chunk))) return 0;
+ if (!(match = HEREDOC.exec(this.chunk))) {
+ return 0;
+ }
heredoc = match[0];
quote = heredoc.charAt(0);
doc = this.sanitizeHeredoc(match[2], {
@@ -205,7 +223,9 @@ define(function(require, exports, module) {
Lexer.prototype.commentToken = function() {
var comment, here, match;
- if (!(match = this.chunk.match(COMMENT))) return 0;
+ if (!(match = this.chunk.match(COMMENT))) {
+ return 0;
+ }
comment = match[0], here = match[1];
if (here) {
this.token('HERECOMMENT', this.sanitizeHeredoc(here, {
@@ -223,12 +243,15 @@ define(function(require, exports, module) {
return 0;
}
this.token('JS', (script = match[0]).slice(1, -1));
+ this.line += count(script, '\n');
return script.length;
};
Lexer.prototype.regexToken = function() {
var flags, length, match, prev, regex, _ref2, _ref3;
- if (this.chunk.charAt(0) !== '/') return 0;
+ if (this.chunk.charAt(0) !== '/') {
+ return 0;
+ }
if (match = HEREGEX.exec(this.chunk)) {
length = this.heregexToken(match);
this.line += count(match[0], '\n');
@@ -238,12 +261,16 @@ define(function(require, exports, module) {
if (prev && (_ref2 = prev[0], __indexOf.call((prev.spaced ? NOT_REGEX : NOT_SPACED_REGEX), _ref2) >= 0)) {
return 0;
}
- if (!(match = REGEX.exec(this.chunk))) return 0;
+ if (!(match = REGEX.exec(this.chunk))) {
+ return 0;
+ }
_ref3 = match, match = _ref3[0], regex = _ref3[1], flags = _ref3[2];
if (regex.slice(0, 2) === '/*') {
this.error('regular expressions cannot begin with `*`');
}
- if (regex === '//') regex = '/(?:)/';
+ if (regex === '//') {
+ regex = '/(?:)/';
+ }
this.token('REGEX', "" + regex + flags);
return match.length;
};
@@ -270,7 +297,9 @@ define(function(require, exports, module) {
if (tag === 'TOKENS') {
tokens.push.apply(tokens, value);
} else {
- if (!(value = value.replace(HEREGEX_OMIT, ''))) continue;
+ if (!(value = value.replace(HEREGEX_OMIT, ''))) {
+ continue;
+ }
value = value.replace(/\\/g, '\\\\');
tokens.push(['STRING', this.makeString(value, '"', true)]);
}
@@ -281,18 +310,21 @@ define(function(require, exports, module) {
this.tokens.push(['STRING', '""'], ['+', '+']);
}
(_ref5 = this.tokens).push.apply(_ref5, tokens);
- if (flags) this.tokens.push([',', ','], ['STRING', '"' + flags + '"']);
+ if (flags) {
+ this.tokens.push([',', ','], ['STRING', '"' + flags + '"']);
+ }
this.token(')', ')');
return heregex.length;
};
Lexer.prototype.lineToken = function() {
- var diff, indent, match, noNewlines, prev, size;
- if (!(match = MULTI_DENT.exec(this.chunk))) return 0;
+ var diff, indent, match, noNewlines, size;
+ if (!(match = MULTI_DENT.exec(this.chunk))) {
+ return 0;
+ }
indent = match[0];
this.line += count(indent, '\n');
this.seenFor = false;
- prev = last(this.tokens, 1);
size = indent.length - 1 - indent.lastIndexOf('\n');
noNewlines = this.unfinished();
if (size - this.indebt === this.indent) {
@@ -342,7 +374,9 @@ define(function(require, exports, module) {
this.token('OUTDENT', dent);
}
}
- if (dent) this.outdebt -= moveOut;
+ if (dent) {
+ this.outdebt -= moveOut;
+ }
while (this.value() === ';') {
this.tokens.pop();
}
@@ -358,7 +392,9 @@ define(function(require, exports, module) {
return 0;
}
prev = last(this.tokens);
- if (prev) prev[match ? 'spaced' : 'newLine'] = true;
+ if (prev) {
+ prev[match ? 'spaced' : 'newLine'] = true;
+ }
if (match) {
return match[0].length;
} else {
@@ -370,12 +406,16 @@ define(function(require, exports, module) {
while (this.value() === ';') {
this.tokens.pop();
}
- if (this.tag() !== 'TERMINATOR') this.token('TERMINATOR', '\n');
+ if (this.tag() !== 'TERMINATOR') {
+ this.token('TERMINATOR', '\n');
+ }
return this;
};
Lexer.prototype.suppressNewlines = function() {
- if (this.value() === '\\') this.tokens.pop();
+ if (this.value() === '\\') {
+ this.tokens.pop();
+ }
return this;
};
@@ -383,7 +423,9 @@ define(function(require, exports, module) {
var match, prev, tag, value, _ref2, _ref3, _ref4, _ref5;
if (match = OPERATOR.exec(this.chunk)) {
value = match[0];
- if (CODE.test(value)) this.tagParameters();
+ if (CODE.test(value)) {
+ this.tagParameters();
+ }
} else {
value = this.chunk.charAt(0);
}
@@ -416,7 +458,9 @@ define(function(require, exports, module) {
tag = 'LOGIC';
} else if (prev && !prev.spaced) {
if (value === '(' && (_ref4 = prev[0], __indexOf.call(CALLABLE, _ref4) >= 0)) {
- if (prev[0] === '?') prev[0] = 'FUNC_EXIST';
+ if (prev[0] === '?') {
+ prev[0] = 'FUNC_EXIST';
+ }
tag = 'CALL_START';
} else if (value === '[' && (_ref5 = prev[0], __indexOf.call(INDEXABLE, _ref5) >= 0)) {
tag = 'INDEX_START';
@@ -448,7 +492,9 @@ define(function(require, exports, module) {
if (HEREDOC_ILLEGAL.test(doc)) {
this.error("block comment cannot contain \"*/\", starting");
}
- if (doc.indexOf('\n') <= 0) return doc;
+ if (doc.indexOf('\n') <= 0) {
+ return doc;
+ }
} else {
while (match = HEREDOC_INDENT.exec(doc)) {
attempt = match[1];
@@ -457,14 +503,20 @@ define(function(require, exports, module) {
}
}
}
- if (indent) doc = doc.replace(RegExp("\\n" + indent, "g"), '\n');
- if (!herecomment) doc = doc.replace(/^\n/, '');
+ if (indent) {
+ doc = doc.replace(RegExp("\\n" + indent, "g"), '\n');
+ }
+ if (!herecomment) {
+ doc = doc.replace(/^\n/, '');
+ }
return doc;
};
Lexer.prototype.tagParameters = function() {
var i, stack, tok, tokens;
- if (this.tag() !== ')') return this;
+ if (this.tag() !== ')') {
+ return this;
+ }
stack = [];
tokens = this.tokens;
i = tokens.length;
@@ -508,7 +560,9 @@ define(function(require, exports, module) {
continue;
case end:
stack.pop();
- if (!stack.length) return str.slice(0, i + 1 || 9e9);
+ if (!stack.length) {
+ return str.slice(0, +i + 1 || 9e9);
+ }
end = stack[stack.length - 1];
continue;
}
@@ -528,7 +582,9 @@ define(function(require, exports, module) {
Lexer.prototype.interpolateString = function(str, options) {
var expr, heredoc, i, inner, interpolated, len, letter, nested, pi, regex, tag, tokens, value, _i, _len, _ref2, _ref3, _ref4;
- if (options == null) options = {};
+ if (options == null) {
+ options = {};
+ }
heredoc = options.heredoc, regex = options.regex;
tokens = [];
pi = 0;
@@ -541,7 +597,9 @@ define(function(require, exports, module) {
if (!(letter === '#' && str.charAt(i + 1) === '{' && (expr = this.balancedString(str.slice(i + 1), '}')))) {
continue;
}
- if (pi < i) tokens.push(['NEOSTRING', str.slice(pi, i)]);
+ if (pi < i) {
+ tokens.push(['NEOSTRING', str.slice(pi, i)]);
+ }
inner = expr.slice(1, -1);
if (inner.length) {
nested = new Lexer().tokenize(inner, {
@@ -563,28 +621,44 @@ define(function(require, exports, module) {
i += expr.length;
pi = i + 1;
}
- if ((i > pi && pi < str.length)) tokens.push(['NEOSTRING', str.slice(pi)]);
- if (regex) return tokens;
- if (!tokens.length) return this.token('STRING', '""');
- if (tokens[0][0] !== 'NEOSTRING') tokens.unshift(['', '']);
- if (interpolated = tokens.length > 1) this.token('(', '(');
+ if ((i > pi && pi < str.length)) {
+ tokens.push(['NEOSTRING', str.slice(pi)]);
+ }
+ if (regex) {
+ return tokens;
+ }
+ if (!tokens.length) {
+ return this.token('STRING', '""');
+ }
+ if (tokens[0][0] !== 'NEOSTRING') {
+ tokens.unshift(['', '']);
+ }
+ if (interpolated = tokens.length > 1) {
+ this.token('(', '(');
+ }
for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) {
_ref3 = tokens[i], tag = _ref3[0], value = _ref3[1];
- if (i) this.token('+', '+');
+ if (i) {
+ this.token('+', '+');
+ }
if (tag === 'TOKENS') {
(_ref4 = this.tokens).push.apply(_ref4, value);
} else {
this.token('STRING', this.makeString(value, '"', heredoc));
}
}
- if (interpolated) this.token(')', ')');
+ if (interpolated) {
+ this.token(')', ')');
+ }
return tokens;
};
Lexer.prototype.pair = function(tag) {
var size, wanted;
if (tag !== (wanted = last(this.ends))) {
- if ('OUTDENT' !== wanted) this.error("unmatched " + tag);
+ if ('OUTDENT' !== wanted) {
+ this.error("unmatched " + tag);
+ }
this.indent -= size = last(this.indents);
this.outdentToken(size, true);
return this.pair(tag);
@@ -616,7 +690,9 @@ define(function(require, exports, module) {
};
Lexer.prototype.makeString = function(body, quote, heredoc) {
- if (!body) return quote + quote;
+ if (!body) {
+ return quote + quote;
+ }
body = body.replace(/\\([\s\S])/g, function(match, contents) {
if (contents === '\n' || contents === quote) {
return contents;
@@ -663,7 +739,7 @@ define(function(require, exports, module) {
COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES);
- RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', '__hasProp', '__extends', '__slice', '__bind', '__indexOf', 'implements', 'interface', 'let', 'package', 'private', 'protected', 'public', 'static', 'yield'];
+ RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', '__hasProp', '__extends', '__slice', '__bind', '__indexOf', 'implements', 'interface', 'package', 'private', 'protected', 'public', 'static', 'yield'];
STRICT_PROSCRIBED = ['arguments', 'eval'];
@@ -723,17 +799,17 @@ define(function(require, exports, module) {
RELATION = ['IN', 'OF', 'INSTANCEOF'];
- BOOL = ['TRUE', 'FALSE', 'NULL', 'UNDEFINED'];
+ BOOL = ['TRUE', 'FALSE'];
- NOT_REGEX = ['NUMBER', 'REGEX', 'BOOL', '++', '--', ']'];
+ NOT_REGEX = ['NUMBER', 'REGEX', 'BOOL', 'NULL', 'UNDEFINED', '++', '--', ']'];
NOT_SPACED_REGEX = NOT_REGEX.concat(')', '}', 'THIS', 'IDENTIFIER', 'STRING');
CALLABLE = ['IDENTIFIER', 'STRING', 'REGEX', ')', ']', '}', '?', '::', '@', 'THIS', 'SUPER'];
- INDEXABLE = CALLABLE.concat('NUMBER', 'BOOL');
+ INDEXABLE = CALLABLE.concat('NUMBER', 'BOOL', 'NULL', 'UNDEFINED');
LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR'];
-});
+});
\ No newline at end of file
diff --git a/lib/ace/mode/coffee/nodes.js b/lib/ace/mode/coffee/nodes.js
index 693976ea..6808bf4e 100644
--- a/lib/ace/mode/coffee/nodes.js
+++ b/lib/ace/mode/coffee/nodes.js
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 2011 Jeremy Ashkenas
+/**
+ * Copyright (c) 2009-2012 Jeremy Ashkenas
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
@@ -24,18 +24,18 @@
*/
define(function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
+// Generated by CoffeeScript 1.3.3
- var Access, Arr, Assign, Base, Block, Call, Class, Closure, Code, Comment, Existence, Extends, For, IDENTIFIER, IDENTIFIER_STR, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, compact, del, ends, extend, flatten, last, merge, multident, starts, unfoldSoak, utility, _ref, _ref1,
+ var Access, Arr, Assign, Base, Block, Call, Class, Closure, Code, Comment, Existence, Extends, For, IDENTIFIER, IDENTIFIER_STR, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, compact, del, ends, extend, flatten, last, merge, multident, some, starts, unfoldSoak, utility, _ref, _ref1,
__hasProp = {}.hasOwnProperty,
- __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; },
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Scope = require('./scope').Scope;
_ref = require('./lexer'), RESERVED = _ref.RESERVED, STRICT_PROSCRIBED = _ref.STRICT_PROSCRIBED;
- _ref1 = require('./helpers'), compact = _ref1.compact, flatten = _ref1.flatten, extend = _ref1.extend, merge = _ref1.merge, del = _ref1.del, starts = _ref1.starts, ends = _ref1.ends, last = _ref1.last;
+ _ref1 = require('./helpers'), compact = _ref1.compact, flatten = _ref1.flatten, extend = _ref1.extend, merge = _ref1.merge, del = _ref1.del, starts = _ref1.starts, ends = _ref1.ends, last = _ref1.last, some = _ref1.some;
exports.extend = extend;
@@ -58,14 +58,14 @@ define(function(require, exports, module) {
exports.Base = Base = (function() {
- Base.name = 'Base';
-
function Base() {}
Base.prototype.compile = function(o, lvl) {
var node;
o = extend({}, o);
- if (lvl) o.level = lvl;
+ if (lvl) {
+ o.level = lvl;
+ }
node = this.unfoldSoak(o) || this;
node.tab = o.indent;
if (o.level === LEVEL_TOP || !node.isStatement(o)) {
@@ -140,17 +140,25 @@ define(function(require, exports, module) {
var i;
i = list.length;
while (i--) {
- if (!(list[i] instanceof Comment)) return list[i];
+ if (!(list[i] instanceof Comment)) {
+ return list[i];
+ }
}
return null;
};
Base.prototype.toString = function(idt, name) {
var tree;
- if (idt == null) idt = '';
- if (name == null) name = this.constructor.name;
+ if (idt == null) {
+ idt = '';
+ }
+ if (name == null) {
+ name = this.constructor.name;
+ }
tree = '\n' + idt + name;
- if (this.soak) tree += '?';
+ if (this.soak) {
+ tree += '?';
+ }
this.eachChild(function(node) {
return tree += node.toString(idt + TAB);
});
@@ -159,7 +167,9 @@ define(function(require, exports, module) {
Base.prototype.eachChild = function(func) {
var attr, child, _i, _j, _len, _len1, _ref2, _ref3;
- if (!this.children) return this;
+ if (!this.children) {
+ return this;
+ }
_ref2 = this.children;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
attr = _ref2[_i];
@@ -167,7 +177,9 @@ define(function(require, exports, module) {
_ref3 = flatten([this[attr]]);
for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
child = _ref3[_j];
- if (func(child) === false) return this;
+ if (func(child) === false) {
+ return this;
+ }
}
}
}
@@ -176,7 +188,9 @@ define(function(require, exports, module) {
Base.prototype.traverseChildren = function(crossScope, func) {
return this.eachChild(function(child) {
- if (func(child) === false) return false;
+ if (func(child) === false) {
+ return false;
+ }
return child.traverseChildren(crossScope, func);
});
};
@@ -220,8 +234,6 @@ define(function(require, exports, module) {
__extends(Block, _super);
- Block.name = 'Block';
-
function Block(nodes) {
this.expressions = compact(flatten(nodes || []));
}
@@ -259,7 +271,9 @@ define(function(require, exports, module) {
_ref2 = this.expressions;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
exp = _ref2[_i];
- if (exp.isStatement(o)) return true;
+ if (exp.isStatement(o)) {
+ return true;
+ }
}
return false;
};
@@ -269,7 +283,9 @@ define(function(require, exports, module) {
_ref2 = this.expressions;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
exp = _ref2[_i];
- if (exp.jumps(o)) return exp;
+ if (exp.jumps(o)) {
+ return exp;
+ }
}
};
@@ -290,7 +306,9 @@ define(function(require, exports, module) {
};
Block.prototype.compile = function(o, level) {
- if (o == null) o = {};
+ if (o == null) {
+ o = {};
+ }
if (o.scope) {
return Block.__super__.compile.call(this, o, level);
} else {
@@ -315,7 +333,9 @@ define(function(require, exports, module) {
code = node.compile(o);
if (!node.isStatement(o)) {
code = "" + this.tab + code + ";";
- if (node instanceof Literal) code = "" + code + "\n";
+ if (node instanceof Literal) {
+ code = "" + code + "\n";
+ }
}
codes.push(code);
} else {
@@ -351,7 +371,9 @@ define(function(require, exports, module) {
_results = [];
for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
exp = _ref2[i];
- if (!(exp.unwrap() instanceof Comment)) break;
+ if (!(exp.unwrap() instanceof Comment)) {
+ break;
+ }
_results.push(exp);
}
return _results;
@@ -366,7 +388,9 @@ define(function(require, exports, module) {
this.expressions = rest;
}
code = this.compileWithDeclarations(o);
- if (o.bare) return code;
+ if (o.bare) {
+ return code;
+ }
return "" + prelude + "(function() {\n" + code + "\n}).call(this);\n";
};
@@ -377,7 +401,9 @@ define(function(require, exports, module) {
for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
exp = _ref2[i];
exp = exp.unwrap();
- if (!(exp instanceof Comment || exp instanceof Literal)) break;
+ if (!(exp instanceof Comment || exp instanceof Literal)) {
+ break;
+ }
}
o = merge(o, {
level: LEVEL_TOP
@@ -394,11 +420,17 @@ define(function(require, exports, module) {
declars = o.scope.hasDeclarations();
assigns = scope.hasAssignments;
if (declars || assigns) {
- if (i) code += '\n';
+ if (i) {
+ code += '\n';
+ }
code += "" + this.tab + "var ";
- if (declars) code += scope.declaredVariables().join(', ');
+ if (declars) {
+ code += scope.declaredVariables().join(', ');
+ }
if (assigns) {
- if (declars) code += ",\n" + (this.tab + TAB);
+ if (declars) {
+ code += ",\n" + (this.tab + TAB);
+ }
code += scope.assignedVariables().join(",\n" + (this.tab + TAB));
}
code += ';\n';
@@ -408,7 +440,9 @@ define(function(require, exports, module) {
};
Block.wrap = function(nodes) {
- if (nodes.length === 1 && nodes[0] instanceof Block) return nodes[0];
+ if (nodes.length === 1 && nodes[0] instanceof Block) {
+ return nodes[0];
+ }
return new Block(nodes);
};
@@ -420,8 +454,6 @@ define(function(require, exports, module) {
__extends(Literal, _super);
- Literal.name = 'Literal';
-
function Literal(value) {
this.value = value;
}
@@ -453,12 +485,14 @@ define(function(require, exports, module) {
if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) {
return this;
}
- if (this.value === 'continue' && !(o != null ? o.loop : void 0)) return this;
+ if (this.value === 'continue' && !(o != null ? o.loop : void 0)) {
+ return this;
+ }
};
Literal.prototype.compileNode = function(o) {
var code, _ref2;
- code = this.isUndefined ? o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0' : this.value === 'this' ? ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? "\"" + this.value + "\"" : this.value;
+ code = this.value === 'this' ? ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? "\"" + this.value + "\"" : this.value;
if (this.isStatement()) {
return "" + this.tab + code + ";";
} else {
@@ -474,14 +508,78 @@ define(function(require, exports, module) {
})(Base);
+ exports.Undefined = (function(_super) {
+
+ __extends(Undefined, _super);
+
+ function Undefined() {
+ return Undefined.__super__.constructor.apply(this, arguments);
+ }
+
+ Undefined.prototype.isAssignable = NO;
+
+ Undefined.prototype.isComplex = NO;
+
+ Undefined.prototype.compileNode = function(o) {
+ if (o.level >= LEVEL_ACCESS) {
+ return '(void 0)';
+ } else {
+ return 'void 0';
+ }
+ };
+
+ return Undefined;
+
+ })(Base);
+
+ exports.Null = (function(_super) {
+
+ __extends(Null, _super);
+
+ function Null() {
+ return Null.__super__.constructor.apply(this, arguments);
+ }
+
+ Null.prototype.isAssignable = NO;
+
+ Null.prototype.isComplex = NO;
+
+ Null.prototype.compileNode = function() {
+ return "null";
+ };
+
+ return Null;
+
+ })(Base);
+
+ exports.Bool = (function(_super) {
+
+ __extends(Bool, _super);
+
+ Bool.prototype.isAssignable = NO;
+
+ Bool.prototype.isComplex = NO;
+
+ Bool.prototype.compileNode = function() {
+ return this.val;
+ };
+
+ function Bool(val) {
+ this.val = val;
+ }
+
+ return Bool;
+
+ })(Base);
+
exports.Return = Return = (function(_super) {
__extends(Return, _super);
- Return.name = 'Return';
-
function Return(expr) {
- if (expr && !expr.unwrap().isUndefined) this.expression = expr;
+ if (expr && !expr.unwrap().isUndefined) {
+ this.expression = expr;
+ }
}
Return.prototype.children = ['expression'];
@@ -514,13 +612,15 @@ define(function(require, exports, module) {
__extends(Value, _super);
- Value.name = 'Value';
-
function Value(base, props, tag) {
- if (!props && base instanceof Value) return base;
+ if (!props && base instanceof Value) {
+ return base;
+ }
this.base = base;
this.properties = props || [];
- if (tag) this[tag] = true;
+ if (tag) {
+ this[tag] = true;
+ }
return this;
}
@@ -560,7 +660,9 @@ define(function(require, exports, module) {
_ref2 = this.properties.concat(this.base);
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
node = _ref2[_i];
- if (node.soak || node instanceof Call) return false;
+ if (node.soak || node instanceof Call) {
+ return false;
+ }
}
return true;
};
@@ -578,7 +680,9 @@ define(function(require, exports, module) {
};
Value.prototype.isObject = function(onlyGenerated) {
- if (this.properties.length) return false;
+ if (this.properties.length) {
+ return false;
+ }
return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated);
};
@@ -605,7 +709,9 @@ define(function(require, exports, module) {
bref = new Literal(o.scope.freeVariable('base'));
base = new Value(new Parens(new Assign(bref, base)));
}
- if (!name) return [base, bref];
+ if (!name) {
+ return [base, bref];
+ }
if (name.isComplex()) {
nref = new Literal(o.scope.freeVariable('name'));
name = new Index(new Assign(nref, name.index));
@@ -632,7 +738,9 @@ define(function(require, exports, module) {
Value.prototype.unfoldSoak = function(o) {
var result,
_this = this;
- if (this.unfoldedSoak != null) return this.unfoldedSoak;
+ if (this.unfoldedSoak != null) {
+ return this.unfoldedSoak;
+ }
result = (function() {
var fst, i, ifn, prop, ref, snd, _i, _len, _ref2;
if (ifn = _this.base.unfoldSoak(o)) {
@@ -642,7 +750,9 @@ define(function(require, exports, module) {
_ref2 = _this.properties;
for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
prop = _ref2[i];
- if (!prop.soak) continue;
+ if (!prop.soak) {
+ continue;
+ }
prop.soak = false;
fst = new Value(_this.base, _this.properties.slice(0, i));
snd = new Value(_this.base, _this.properties.slice(i));
@@ -668,8 +778,6 @@ define(function(require, exports, module) {
__extends(Comment, _super);
- Comment.name = 'Comment';
-
function Comment(comment) {
this.comment = comment;
}
@@ -681,7 +789,9 @@ define(function(require, exports, module) {
Comment.prototype.compileNode = function(o, level) {
var code;
code = '/*' + multident(this.comment, this.tab) + ("\n" + this.tab + "*/\n");
- if ((level || o.level) === LEVEL_TOP) code = o.indent + code;
+ if ((level || o.level) === LEVEL_TOP) {
+ code = o.indent + code;
+ }
return code;
};
@@ -693,8 +803,6 @@ define(function(require, exports, module) {
__extends(Call, _super);
- Call.name = 'Call';
-
function Call(variable, args, soak) {
this.args = args != null ? args : [];
this.soak = soak;
@@ -718,8 +826,10 @@ define(function(require, exports, module) {
Call.prototype.superReference = function(o) {
var accesses, method, name;
- method = o.scope.method;
- if (!method) throw SyntaxError('cannot call super outside of a function.');
+ method = o.scope.namedMethod();
+ if (!method) {
+ throw SyntaxError('cannot call super outside of a function.');
+ }
name = method.name;
if (name == null) {
throw SyntaxError('cannot call super on an anonymous function.');
@@ -736,11 +846,19 @@ define(function(require, exports, module) {
}
};
+ Call.prototype.superThis = function(o) {
+ var method;
+ method = o.scope.method;
+ return (method && !method.klass && method.context) || "this";
+ };
+
Call.prototype.unfoldSoak = function(o) {
var call, ifn, left, list, rite, _i, _len, _ref2, _ref3;
if (this.soak) {
if (this.variable) {
- if (ifn = unfoldSoak(o, this, 'variable')) return ifn;
+ if (ifn = unfoldSoak(o, this, 'variable')) {
+ return ifn;
+ }
_ref2 = new Value(this.variable).cacheReference(o), left = _ref2[0], rite = _ref2[1];
} else {
left = new Literal(this.superReference(o));
@@ -761,9 +879,13 @@ define(function(require, exports, module) {
call = call.variable;
continue;
}
- if (!(call.variable instanceof Value)) break;
+ if (!(call.variable instanceof Value)) {
+ break;
+ }
list.push(call);
- if (!((call = call.variable.base) instanceof Call)) break;
+ if (!((call = call.variable.base) instanceof Call)) {
+ break;
+ }
}
_ref3 = list.reverse();
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
@@ -794,7 +916,9 @@ define(function(require, exports, module) {
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
prop = _ref2[_j];
if (prop instanceof Assign || prop instanceof Comment) {
- if (!obj) nodes.push(obj = new Obj(properties = [], true));
+ if (!obj) {
+ nodes.push(obj = new Obj(properties = [], true));
+ }
properties.push(prop);
} else {
nodes.push(prop);
@@ -807,7 +931,9 @@ define(function(require, exports, module) {
Call.prototype.compileNode = function(o) {
var arg, args, code, _ref2;
- if ((_ref2 = this.variable) != null) _ref2.front = this.front;
+ if ((_ref2 = this.variable) != null) {
+ _ref2.front = this.front;
+ }
if (code = Splat.compileSplattedArray(o, this.args, true)) {
return this.compileSplat(o, code);
}
@@ -822,20 +948,20 @@ define(function(require, exports, module) {
return _results;
})()).join(', ');
if (this.isSuper) {
- return this.superReference(o) + (".call(this" + (args && ', ' + args) + ")");
+ return this.superReference(o) + (".call(" + (this.superThis(o)) + (args && ', ' + args) + ")");
} else {
return (this.isNew ? 'new ' : '') + this.variable.compile(o, LEVEL_ACCESS) + ("(" + args + ")");
}
};
Call.prototype.compileSuper = function(args, o) {
- return "" + (this.superReference(o)) + ".call(this" + (args.length ? ', ' : '') + args + ")";
+ return "" + (this.superReference(o)) + ".call(" + (this.superThis(o)) + (args.length ? ', ' : '') + args + ")";
};
Call.prototype.compileSplat = function(o, splatArgs) {
var base, fun, idt, name, ref;
if (this.isSuper) {
- return "" + (this.superReference(o)) + ".apply(this, " + splatArgs + ")";
+ return "" + (this.superReference(o)) + ".apply(" + (this.superThis(o)) + ", " + splatArgs + ")";
}
if (this.isNew) {
idt = this.tab + TAB;
@@ -847,7 +973,9 @@ define(function(require, exports, module) {
fun = "(" + ref + " = " + (base.compile(o, LEVEL_LIST)) + ")" + (name.compile(o));
} else {
fun = base.compile(o, LEVEL_ACCESS);
- if (SIMPLENUM.test(fun)) fun = "(" + fun + ")";
+ if (SIMPLENUM.test(fun)) {
+ fun = "(" + fun + ")";
+ }
if (name) {
ref = fun;
fun += name.compile(o);
@@ -866,8 +994,6 @@ define(function(require, exports, module) {
__extends(Extends, _super);
- Extends.name = 'Extends';
-
function Extends(child, parent) {
this.child = child;
this.parent = parent;
@@ -887,8 +1013,6 @@ define(function(require, exports, module) {
__extends(Access, _super);
- Access.name = 'Access';
-
function Access(name, tag) {
this.name = name;
this.name.asKey = true;
@@ -917,8 +1041,6 @@ define(function(require, exports, module) {
__extends(Index, _super);
- Index.name = 'Index';
-
function Index(index) {
this.index = index;
}
@@ -941,8 +1063,6 @@ define(function(require, exports, module) {
__extends(Range, _super);
- Range.name = 'Range';
-
Range.prototype.children = ['from', 'to'];
function Range(from, to, tag) {
@@ -963,25 +1083,39 @@ define(function(require, exports, module) {
_ref4 = step.cache(o, LEVEL_LIST), this.step = _ref4[0], this.stepVar = _ref4[1];
}
_ref5 = [this.fromVar.match(SIMPLENUM), this.toVar.match(SIMPLENUM)], this.fromNum = _ref5[0], this.toNum = _ref5[1];
- if (this.stepVar) return this.stepNum = this.stepVar.match(SIMPLENUM);
+ if (this.stepVar) {
+ return this.stepNum = this.stepVar.match(SIMPLENUM);
+ }
};
Range.prototype.compileNode = function(o) {
var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, stepPart, to, varPart, _ref2, _ref3;
- if (!this.fromVar) this.compileVariables(o);
- if (!o.index) return this.compileArray(o);
+ if (!this.fromVar) {
+ this.compileVariables(o);
+ }
+ if (!o.index) {
+ return this.compileArray(o);
+ }
known = this.fromNum && this.toNum;
idx = del(o, 'index');
idxName = del(o, 'name');
namedIndex = idxName && idxName !== idx;
varPart = "" + idx + " = " + this.fromC;
- if (this.toC !== this.toVar) varPart += ", " + this.toC;
- if (this.step !== this.stepVar) varPart += ", " + this.step;
+ if (this.toC !== this.toVar) {
+ varPart += ", " + this.toC;
+ }
+ if (this.step !== this.stepVar) {
+ varPart += ", " + this.step;
+ }
_ref2 = ["" + idx + " <" + this.equals, "" + idx + " >" + this.equals], lt = _ref2[0], gt = _ref2[1];
condPart = this.stepNum ? +this.stepNum > 0 ? "" + lt + " " + this.toVar : "" + gt + " " + this.toVar : known ? ((_ref3 = [+this.fromNum, +this.toNum], from = _ref3[0], to = _ref3[1], _ref3), from <= to ? "" + lt + " " + to : "" + gt + " " + to) : (cond = "" + this.fromVar + " <= " + this.toVar, "" + cond + " ? " + lt + " " + this.toVar + " : " + gt + " " + this.toVar);
stepPart = this.stepVar ? "" + idx + " += " + this.stepVar : known ? namedIndex ? from <= to ? "++" + idx : "--" + idx : from <= to ? "" + idx + "++" : "" + idx + "--" : namedIndex ? "" + cond + " ? ++" + idx + " : --" + idx : "" + cond + " ? " + idx + "++ : " + idx + "--";
- if (namedIndex) varPart = "" + idxName + " = " + varPart;
- if (namedIndex) stepPart = "" + idxName + " = " + stepPart;
+ if (namedIndex) {
+ varPart = "" + idxName + " = " + varPart;
+ }
+ if (namedIndex) {
+ stepPart = "" + idxName + " = " + stepPart;
+ }
return "" + varPart + "; " + condPart + "; " + stepPart;
};
@@ -993,7 +1127,9 @@ define(function(require, exports, module) {
for (var _i = _ref2 = +this.fromNum, _ref3 = +this.toNum; _ref2 <= _ref3 ? _i <= _ref3 : _i >= _ref3; _ref2 <= _ref3 ? _i++ : _i--){ _results.push(_i); }
return _results;
}).apply(this);
- if (this.exclusive) range.pop();
+ if (this.exclusive) {
+ range.pop();
+ }
return "[" + (range.join(', ')) + "]";
}
idt = this.tab + TAB;
@@ -1014,7 +1150,9 @@ define(function(require, exports, module) {
return n instanceof Literal && n.value === 'arguments' && !n.asKey;
}) : void 0;
};
- if (hasArgs(this.from) || hasArgs(this.to)) args = ', arguments';
+ if (hasArgs(this.from) || hasArgs(this.to)) {
+ args = ', arguments';
+ }
return "(function() {" + pre + "\n" + idt + "for (" + body + ")" + post + "}).apply(this" + (args != null ? args : '') + ")";
};
@@ -1026,8 +1164,6 @@ define(function(require, exports, module) {
__extends(Slice, _super);
- Slice.name = 'Slice';
-
Slice.prototype.children = ['range'];
function Slice(range) {
@@ -1041,7 +1177,7 @@ define(function(require, exports, module) {
fromStr = from && from.compile(o, LEVEL_PAREN) || '0';
compiled = to && to.compile(o, LEVEL_PAREN);
if (to && !(!this.range.exclusive && +compiled === -1)) {
- toStr = ', ' + (this.range.exclusive ? compiled : SIMPLENUM.test(compiled) ? "" + (+compiled + 1) : (compiled = to.compile(o, LEVEL_ACCESS), "" + compiled + " + 1 || 9e9"));
+ toStr = ', ' + (this.range.exclusive ? compiled : SIMPLENUM.test(compiled) ? "" + (+compiled + 1) : (compiled = to.compile(o, LEVEL_ACCESS), "+" + compiled + " + 1 || 9e9"));
}
return ".slice(" + fromStr + (toStr || '') + ")";
};
@@ -1054,8 +1190,6 @@ define(function(require, exports, module) {
__extends(Obj, _super);
- Obj.name = 'Obj';
-
function Obj(props, generated) {
this.generated = generated != null ? generated : false;
this.objects = this.properties = props || [];
@@ -1064,25 +1198,14 @@ define(function(require, exports, module) {
Obj.prototype.children = ['properties'];
Obj.prototype.compileNode = function(o) {
- var i, idt, indent, join, lastNoncom, node, obj, prop, propName, propNames, props, _i, _j, _len, _len1, _ref2;
+ var i, idt, indent, join, lastNoncom, node, obj, prop, props, _i, _len;
props = this.properties;
- propNames = [];
- _ref2 = this.properties;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- prop = _ref2[_i];
- if (prop.isComplex()) prop = prop.variable;
- if (prop != null) {
- propName = prop.unwrapAll().value.toString();
- if (__indexOf.call(propNames, propName) >= 0) {
- throw SyntaxError("multiple object literal properties named \"" + propName + "\"");
- }
- propNames.push(propName);
- }
+ if (!props.length) {
+ return (this.front ? '({})' : '{}');
}
- if (!props.length) return (this.front ? '({})' : '{}');
if (this.generated) {
- for (_j = 0, _len1 = props.length; _j < _len1; _j++) {
- node = props[_j];
+ for (_i = 0, _len = props.length; _i < _len; _i++) {
+ node = props[_i];
if (node instanceof Value) {
throw new Error('cannot have an implicit value in an implicit object');
}
@@ -1091,9 +1214,9 @@ define(function(require, exports, module) {
idt = o.indent += TAB;
lastNoncom = this.lastNonComment(this.properties);
props = (function() {
- var _k, _len2, _results;
+ var _j, _len1, _results;
_results = [];
- for (i = _k = 0, _len2 = props.length; _k < _len2; i = ++_k) {
+ for (i = _j = 0, _len1 = props.length; _j < _len1; i = ++_j) {
prop = props[i];
join = i === props.length - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\n' : ',\n';
indent = prop instanceof Comment ? '' : idt;
@@ -1101,7 +1224,9 @@ define(function(require, exports, module) {
prop = new Assign(prop.properties[0].name, prop, 'object');
}
if (!(prop instanceof Comment)) {
- if (!(prop instanceof Assign)) prop = new Assign(prop, prop, 'object');
+ if (!(prop instanceof Assign)) {
+ prop = new Assign(prop, prop, 'object');
+ }
(prop.variable.base || prop.variable).asKey = true;
}
_results.push(indent + prop.compile(o, LEVEL_TOP) + join);
@@ -1122,7 +1247,9 @@ define(function(require, exports, module) {
_ref2 = this.properties;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
prop = _ref2[_i];
- if (prop.assigns(name)) return true;
+ if (prop.assigns(name)) {
+ return true;
+ }
}
return false;
};
@@ -1135,8 +1262,6 @@ define(function(require, exports, module) {
__extends(Arr, _super);
- Arr.name = 'Arr';
-
function Arr(objs) {
this.objects = objs || [];
}
@@ -1147,10 +1272,14 @@ define(function(require, exports, module) {
Arr.prototype.compileNode = function(o) {
var code, obj, objs;
- if (!this.objects.length) return '[]';
+ if (!this.objects.length) {
+ return '[]';
+ }
o.indent += TAB;
objs = this.filterImplicitObjects(this.objects);
- if (code = Splat.compileSplattedArray(o, objs)) return code;
+ if (code = Splat.compileSplattedArray(o, objs)) {
+ return code;
+ }
code = ((function() {
var _i, _len, _results;
_results = [];
@@ -1172,7 +1301,9 @@ define(function(require, exports, module) {
_ref2 = this.objects;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
obj = _ref2[_i];
- if (obj.assigns(name)) return true;
+ if (obj.assigns(name)) {
+ return true;
+ }
}
return false;
};
@@ -1185,8 +1316,6 @@ define(function(require, exports, module) {
__extends(Class, _super);
- Class.name = 'Class';
-
function Class(variable, parent, body) {
this.variable = variable;
this.parent = parent;
@@ -1199,7 +1328,9 @@ define(function(require, exports, module) {
Class.prototype.determineName = function() {
var decl, tail;
- if (!this.variable) return null;
+ if (!this.variable) {
+ return null;
+ }
decl = (tail = last(this.variable.properties)) ? tail instanceof Access && tail.name.value : this.variable.base.value;
if (__indexOf.call(STRICT_PROSCRIBED, decl) >= 0) {
throw SyntaxError("variable name may not be " + decl);
@@ -1209,12 +1340,16 @@ define(function(require, exports, module) {
Class.prototype.setContext = function(name) {
return this.body.traverseChildren(false, function(node) {
- if (node.classBody) return false;
+ if (node.classBody) {
+ return false;
+ }
if (node instanceof Literal && node.value === 'this') {
return node.value = name;
} else if (node instanceof Code) {
node.klass = name;
- if (node.bound) return node.context = name;
+ if (node.bound) {
+ return node.context = name;
+ }
}
});
};
@@ -1260,7 +1395,9 @@ define(function(require, exports, module) {
} else {
if (assign.variable["this"]) {
func["static"] = true;
- if (func.bound) func.context = name;
+ if (func.bound) {
+ func.context = name;
+ }
} else {
assign.variable = new Value(new Literal(name), [new Access(new Literal('prototype')), new Access(base)]);
if (func instanceof Code && func.bound) {
@@ -1281,7 +1418,9 @@ define(function(require, exports, module) {
var _this = this;
return this.traverseChildren(false, function(child) {
var exps, i, node, _i, _len, _ref2;
- if (child instanceof Class) return false;
+ if (child instanceof Class) {
+ return false;
+ }
if (child instanceof Block) {
_ref2 = exps = child.expressions;
for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
@@ -1326,16 +1465,17 @@ define(function(require, exports, module) {
var call, decl, klass, lname, name, params, _ref2;
decl = this.determineName();
name = decl || '_Class';
- if (name.reserved) name = "_" + name;
+ if (name.reserved) {
+ name = "_" + name;
+ }
lname = new Literal(name);
this.hoistDirectivePrologue();
this.setContext(name);
this.walkBody(name, o);
this.ensureConstructor(name);
this.body.spaced = true;
- if (!(this.ctor instanceof Code)) this.body.expressions.unshift(this.ctor);
- if (decl) {
- this.body.expressions.unshift(new Assign(new Value(new Literal(name), [new Access(new Literal('name'))]), new Literal("'" + name + "'")));
+ if (!(this.ctor instanceof Code)) {
+ this.body.expressions.unshift(this.ctor);
}
this.body.expressions.push(lname);
(_ref2 = this.body.expressions).unshift.apply(_ref2, this.directives);
@@ -1349,7 +1489,9 @@ define(function(require, exports, module) {
params.push(new Param(this.superClass));
}
klass = new Parens(call, true);
- if (this.variable) klass = new Assign(this.variable, klass);
+ if (this.variable) {
+ klass = new Assign(this.variable, klass);
+ }
return klass.compile(o);
};
@@ -1361,8 +1503,6 @@ define(function(require, exports, module) {
__extends(Assign, _super);
- Assign.name = 'Assign';
-
function Assign(variable, value, context, options) {
var forbidden, name, _ref2;
this.variable = variable;
@@ -1396,7 +1536,9 @@ define(function(require, exports, module) {
if (this.variable.isArray() || this.variable.isObject()) {
return this.compilePatternMatch(o);
}
- if (this.variable.isSplice()) return this.compileSplice(o);
+ if (this.variable.isSplice()) {
+ return this.compileSplice(o);
+ }
if ((_ref2 = this.context) === '||=' || _ref2 === '&&=' || _ref2 === '?=') {
return this.compileConditional(o);
}
@@ -1415,11 +1557,15 @@ define(function(require, exports, module) {
}
}
if (this.value instanceof Code && (match = METHOD_DEF.exec(name))) {
- if (match[1]) this.value.klass = match[1];
+ if (match[1]) {
+ this.value.klass = match[1];
+ }
this.value.name = (_ref3 = (_ref4 = (_ref5 = match[2]) != null ? _ref5 : match[3]) != null ? _ref4 : match[4]) != null ? _ref3 : match[5];
}
val = this.value.compile(o, LEVEL_LIST);
- if (this.context === 'object') return "" + name + ": " + val;
+ if (this.context === 'object') {
+ return "" + name + ": " + val;
+ }
val = name + (" " + (this.context || '=') + " ") + val;
if (o.level <= LEVEL_LIST) {
return val;
@@ -1517,7 +1663,9 @@ define(function(require, exports, module) {
subpattern: true
}).compile(o, LEVEL_LIST));
}
- if (!(top || this.subpattern)) assigns.push(vvar);
+ if (!(top || this.subpattern)) {
+ assigns.push(vvar);
+ }
code = assigns.join(', ');
if (o.level < LEVEL_LIST) {
return code;
@@ -1529,10 +1677,12 @@ define(function(require, exports, module) {
Assign.prototype.compileConditional = function(o) {
var left, right, _ref2;
_ref2 = this.variable.cacheReference(o), left = _ref2[0], right = _ref2[1];
- if (left.base instanceof Literal && left.base.value !== "this" && !o.scope.check(left.base.value)) {
+ if (!left.properties.length && left.base instanceof Literal && left.base.value !== "this" && !o.scope.check(left.base.value)) {
throw new Error("the variable \"" + left.base.value + "\" can't be assigned with " + this.context + " because it has not been defined.");
}
- if (__indexOf.call(this.context, "?") >= 0) o.isExistentialEquals = true;
+ if (__indexOf.call(this.context, "?") >= 0) {
+ o.isExistentialEquals = true;
+ }
return new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compile(o);
};
@@ -1544,10 +1694,14 @@ define(function(require, exports, module) {
if (to) {
if ((from != null ? from.isSimpleNumber() : void 0) && to.isSimpleNumber()) {
to = +to.compile(o) - +fromRef;
- if (!exclusive) to += 1;
+ if (!exclusive) {
+ to += 1;
+ }
} else {
to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef;
- if (!exclusive) to += ' + 1';
+ if (!exclusive) {
+ to += ' + 1';
+ }
}
} else {
to = "9e9";
@@ -1569,13 +1723,13 @@ define(function(require, exports, module) {
__extends(Code, _super);
- Code.name = 'Code';
-
function Code(params, body, tag) {
this.params = params || [];
this.body = body || new Block;
this.bound = tag === 'boundfunc';
- if (this.bound) this.context = '_this';
+ if (this.bound) {
+ this.context = '_this';
+ }
}
Code.prototype.children = ['params', 'body'];
@@ -1598,16 +1752,25 @@ define(function(require, exports, module) {
_ref2 = this.paramNames();
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
name = _ref2[_i];
- if (!o.scope.check(name)) o.scope.parameter(name);
+ if (!o.scope.check(name)) {
+ o.scope.parameter(name);
+ }
}
_ref3 = this.params;
for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
param = _ref3[_j];
- if (!param.splat) continue;
+ if (!param.splat) {
+ continue;
+ }
_ref4 = this.params;
for (_k = 0, _len2 = _ref4.length; _k < _len2; _k++) {
- p = _ref4[_k];
- if (p.name.value) o.scope.add(p.name.value, 'var', true);
+ p = _ref4[_k].name;
+ if (p["this"]) {
+ p = p.properties[0].name;
+ }
+ if (p.value) {
+ o.scope.add(p.value, 'var', true);
+ }
}
splats = new Assign(new Value(new Arr((function() {
var _l, _len3, _ref5, _results;
@@ -1626,7 +1789,9 @@ define(function(require, exports, module) {
param = _ref5[_l];
if (param.isComplex()) {
val = ref = param.asReference(o);
- if (param.value) val = new Op('?', ref, param.value);
+ if (param.value) {
+ val = new Op('?', ref, param.value);
+ }
exprs.push(new Assign(new Value(param.name), val, '=', {
param: true
}));
@@ -1638,10 +1803,14 @@ define(function(require, exports, module) {
exprs.push(new If(lit, val));
}
}
- if (!splats) params.push(ref);
+ if (!splats) {
+ params.push(ref);
+ }
}
wasEmpty = this.body.isEmpty();
- if (splats) exprs.unshift(splats);
+ if (splats) {
+ exprs.unshift(splats);
+ }
if (exprs.length) {
(_ref6 = this.body.expressions).unshift.apply(_ref6, exprs);
}
@@ -1658,7 +1827,9 @@ define(function(require, exports, module) {
}
uniqs.push(name);
}
- if (!(wasEmpty || this.noReturn)) this.body.makeReturn();
+ if (!(wasEmpty || this.noReturn)) {
+ this.body.makeReturn();
+ }
if (this.bound) {
if ((_ref8 = o.scope.parent.method) != null ? _ref8.bound : void 0) {
this.bound = this.context = o.scope.parent.method.context;
@@ -1668,13 +1839,17 @@ define(function(require, exports, module) {
}
idt = o.indent;
code = 'function';
- if (this.ctor) code += ' ' + this.name;
+ if (this.ctor) {
+ code += ' ' + this.name;
+ }
code += '(' + params.join(', ') + ') {';
if (!this.body.isEmpty()) {
code += "\n" + (this.body.compileWithDeclarations(o)) + "\n" + this.tab;
}
code += '}';
- if (this.ctor) return this.tab + code;
+ if (this.ctor) {
+ return this.tab + code;
+ }
if (this.front || (o.level >= LEVEL_ACCESS)) {
return "(" + code + ")";
} else {
@@ -1707,8 +1882,6 @@ define(function(require, exports, module) {
__extends(Param, _super);
- Param.name = 'Param';
-
function Param(name, value, splat) {
var _ref2;
this.name = name;
@@ -1727,7 +1900,9 @@ define(function(require, exports, module) {
Param.prototype.asReference = function(o) {
var node;
- if (this.reference) return this.reference;
+ if (this.reference) {
+ return this.reference;
+ }
node = this.name;
if (node["this"]) {
node = node.properties[0].name;
@@ -1738,7 +1913,9 @@ define(function(require, exports, module) {
node = new Literal(o.scope.freeVariable('arg'));
}
node = new Value(node);
- if (this.splat) node = new Splat(node);
+ if (this.splat) {
+ node = new Splat(node);
+ }
return this.reference = node;
};
@@ -1748,7 +1925,9 @@ define(function(require, exports, module) {
Param.prototype.names = function(name) {
var atParam, names, obj, _i, _len, _ref2;
- if (name == null) name = this.name;
+ if (name == null) {
+ name = this.name;
+ }
atParam = function(obj) {
var value;
value = obj.properties[0].name.value;
@@ -1758,20 +1937,30 @@ define(function(require, exports, module) {
return [value];
}
};
- if (name instanceof Literal) return [name.value];
- if (name instanceof Value) return atParam(name);
+ if (name instanceof Literal) {
+ return [name.value];
+ }
+ if (name instanceof Value) {
+ return atParam(name);
+ }
names = [];
_ref2 = name.objects;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
obj = _ref2[_i];
if (obj instanceof Assign) {
- names.push(obj.variable.base.value);
- } else if (obj.isArray() || obj.isObject()) {
- names.push.apply(names, this.names(obj.base));
- } else if (obj["this"]) {
- names.push.apply(names, atParam(obj));
+ names.push(obj.value.unwrap().value);
+ } else if (obj instanceof Splat) {
+ names.push(obj.name.unwrap().value);
+ } else if (obj instanceof Value) {
+ if (obj.isArray() || obj.isObject()) {
+ names.push.apply(names, this.names(obj.base));
+ } else if (obj["this"]) {
+ names.push.apply(names, atParam(obj));
+ } else {
+ names.push(obj.base.value);
+ }
} else {
- names.push(obj.base.value);
+ throw SyntaxError("illegal parameter " + (obj.compile()));
}
}
return names;
@@ -1785,8 +1974,6 @@ define(function(require, exports, module) {
__extends(Splat, _super);
- Splat.name = 'Splat';
-
Splat.prototype.children = ['name'];
Splat.prototype.isAssignable = YES;
@@ -1817,10 +2004,14 @@ define(function(require, exports, module) {
while ((node = list[++index]) && !(node instanceof Splat)) {
continue;
}
- if (index >= list.length) return '';
+ if (index >= list.length) {
+ return '';
+ }
if (list.length === 1) {
code = list[0].compile(o, LEVEL_LIST);
- if (apply) return code;
+ if (apply) {
+ return code;
+ }
return "" + (utility('slice')) + ".call(" + code + ")";
}
args = list.slice(index);
@@ -1853,8 +2044,6 @@ define(function(require, exports, module) {
__extends(While, _super);
- While.name = 'While';
-
function While(condition, options) {
this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition;
this.guard = options != null ? options.guard : void 0;
@@ -1883,12 +2072,16 @@ define(function(require, exports, module) {
While.prototype.jumps = function() {
var expressions, node, _i, _len;
expressions = this.body.expressions;
- if (!expressions.length) return false;
+ if (!expressions.length) {
+ return false;
+ }
for (_i = 0, _len = expressions.length; _i < _len; _i++) {
node = expressions[_i];
if (node.jumps({
loop: true
- })) return node;
+ })) {
+ return node;
+ }
}
return false;
};
@@ -1909,13 +2102,17 @@ define(function(require, exports, module) {
if (body.expressions.length > 1) {
body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
} else {
- if (this.guard) body = Block.wrap([new If(this.guard, body)]);
+ if (this.guard) {
+ body = Block.wrap([new If(this.guard, body)]);
+ }
}
}
body = "\n" + (body.compile(o, LEVEL_TOP)) + "\n" + this.tab;
}
code = set + this.tab + ("while (" + (this.condition.compile(o, LEVEL_PAREN)) + ") {" + body + "}");
- if (this.returns) code += "\n" + this.tab + "return " + rvar + ";";
+ if (this.returns) {
+ code += "\n" + this.tab + "return " + rvar + ";";
+ }
return code;
};
@@ -1928,11 +2125,13 @@ define(function(require, exports, module) {
__extends(Op, _super);
- Op.name = 'Op';
-
function Op(op, first, second, flip) {
- if (op === 'in') return new In(first, second);
- if (op === 'do') return this.generateDo(first);
+ if (op === 'in') {
+ return new In(first, second);
+ }
+ if (op === 'do') {
+ return this.generateDo(first);
+ }
if (op === 'new') {
if (first instanceof Call && !first["do"] && !first.isNew) {
return first.newInstance();
@@ -1986,7 +2185,9 @@ define(function(require, exports, module) {
allInvertable && (allInvertable = curr.operator in INVERSIONS);
curr = curr.first;
}
- if (!allInvertable) return new Parens(this).invert();
+ if (!allInvertable) {
+ return new Parens(this).invert();
+ }
curr = this;
while (curr && curr.operator) {
curr.invert = !curr.invert;
@@ -1996,7 +2197,9 @@ define(function(require, exports, module) {
return this;
} else if (op = INVERSIONS[this.operator]) {
this.operator = op;
- if (this.first.unwrap() instanceof Op) this.first.invert();
+ if (this.first.unwrap() instanceof Op) {
+ this.first.invert();
+ }
return this;
} else if (this.second) {
return new Parens(this).invert();
@@ -2034,16 +2237,24 @@ define(function(require, exports, module) {
Op.prototype.compileNode = function(o) {
var code, isChain, _ref2, _ref3;
isChain = this.isChainable() && this.first.isChainable();
- if (!isChain) this.first.front = this.front;
+ if (!isChain) {
+ this.first.front = this.front;
+ }
if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) {
throw SyntaxError('delete operand may not be argument or var');
}
if (((_ref2 = this.operator) === '--' || _ref2 === '++') && (_ref3 = this.first.unwrapAll().value, __indexOf.call(STRICT_PROSCRIBED, _ref3) >= 0)) {
throw SyntaxError('prefix increment/decrement may not have eval or arguments operand');
}
- if (this.isUnary()) return this.compileUnary(o);
- if (isChain) return this.compileChain(o);
- if (this.operator === '?') return this.compileExistence(o);
+ if (this.isUnary()) {
+ return this.compileUnary(o);
+ }
+ if (isChain) {
+ return this.compileChain(o);
+ }
+ if (this.operator === '?') {
+ return this.compileExistence(o);
+ }
code = this.first.compile(o, LEVEL_OP) + ' ' + this.operator + ' ' + this.second.compile(o, LEVEL_OP);
if (o.level <= LEVEL_OP) {
return code;
@@ -2062,7 +2273,7 @@ define(function(require, exports, module) {
Op.prototype.compileExistence = function(o) {
var fst, ref;
- if (this.first.isComplex() && o.level > LEVEL_TOP) {
+ if (this.first.isComplex()) {
ref = new Literal(o.scope.freeVariable('ref'));
fst = new Parens(new Assign(ref, this.first));
} else {
@@ -2076,7 +2287,9 @@ define(function(require, exports, module) {
Op.prototype.compileUnary = function(o) {
var op, parts, plusMinus;
- if (o.level >= LEVEL_ACCESS) return (new Parens(this)).compile(o);
+ if (o.level >= LEVEL_ACCESS) {
+ return (new Parens(this)).compile(o);
+ }
parts = [op = this.operator];
plusMinus = op === '+' || op === '-';
if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) {
@@ -2086,7 +2299,9 @@ define(function(require, exports, module) {
this.first = new Parens(this.first);
}
parts.push(this.first.compile(o, LEVEL_OP));
- if (this.flip) parts.reverse();
+ if (this.flip) {
+ parts.reverse();
+ }
return parts.join('');
};
@@ -2102,8 +2317,6 @@ define(function(require, exports, module) {
__extends(In, _super);
- In.name = 'In';
-
function In(object, array) {
this.object = object;
this.array = array;
@@ -2119,18 +2332,24 @@ define(function(require, exports, module) {
_ref2 = this.array.base.objects;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
obj = _ref2[_i];
- if (!(obj instanceof Splat)) continue;
+ if (!(obj instanceof Splat)) {
+ continue;
+ }
hasSplat = true;
break;
}
- if (!hasSplat) return this.compileOrTest(o);
+ if (!hasSplat) {
+ return this.compileOrTest(o);
+ }
}
return this.compileLoopTest(o);
};
In.prototype.compileOrTest = function(o) {
var cmp, cnj, i, item, ref, sub, tests, _ref2, _ref3;
- if (this.array.base.objects.length === 0) return "" + (!!this.negated);
+ if (this.array.base.objects.length === 0) {
+ return "" + (!!this.negated);
+ }
_ref2 = this.object.cache(o, LEVEL_OP), sub = _ref2[0], ref = _ref2[1];
_ref3 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = _ref3[0], cnj = _ref3[1];
tests = (function() {
@@ -2155,7 +2374,9 @@ define(function(require, exports, module) {
var code, ref, sub, _ref2;
_ref2 = this.object.cache(o, LEVEL_LIST), sub = _ref2[0], ref = _ref2[1];
code = utility('indexOf') + (".call(" + (this.array.compile(o, LEVEL_LIST)) + ", " + ref + ") ") + (this.negated ? '< 0' : '>= 0');
- if (sub === ref) return code;
+ if (sub === ref) {
+ return code;
+ }
code = sub + ', ' + code;
if (o.level < LEVEL_LIST) {
return code;
@@ -2176,8 +2397,6 @@ define(function(require, exports, module) {
__extends(Try, _super);
- Try.name = 'Try';
-
function Try(attempt, error, recovery, ensure) {
this.attempt = attempt;
this.error = error;
@@ -2195,8 +2414,12 @@ define(function(require, exports, module) {
};
Try.prototype.makeReturn = function(res) {
- if (this.attempt) this.attempt = this.attempt.makeReturn(res);
- if (this.recovery) this.recovery = this.recovery.makeReturn(res);
+ if (this.attempt) {
+ this.attempt = this.attempt.makeReturn(res);
+ }
+ if (this.recovery) {
+ this.recovery = this.recovery.makeReturn(res);
+ }
return this;
};
@@ -2231,8 +2454,6 @@ define(function(require, exports, module) {
__extends(Throw, _super);
- Throw.name = 'Throw';
-
function Throw(expression) {
this.expression = expression;
}
@@ -2257,8 +2478,6 @@ define(function(require, exports, module) {
__extends(Existence, _super);
- Existence.name = 'Existence';
-
function Existence(expression) {
this.expression = expression;
}
@@ -2292,8 +2511,6 @@ define(function(require, exports, module) {
__extends(Parens, _super);
- Parens.name = 'Parens';
-
function Parens(body) {
this.body = body;
}
@@ -2332,8 +2549,6 @@ define(function(require, exports, module) {
__extends(For, _super);
- For.name = 'For';
-
function For(body, source) {
var _ref2;
this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index;
@@ -2363,27 +2578,31 @@ define(function(require, exports, module) {
var body, defPart, forPart, forVarPart, guardPart, idt1, index, ivar, kvar, kvarAssign, lastJumps, lvar, name, namePart, ref, resultPart, returnResult, rvar, scope, source, stepPart, stepvar, svar, varPart, _ref2;
body = Block.wrap([this.body]);
lastJumps = (_ref2 = last(body.expressions)) != null ? _ref2.jumps() : void 0;
- if (lastJumps && lastJumps instanceof Return) this.returns = false;
+ if (lastJumps && lastJumps instanceof Return) {
+ this.returns = false;
+ }
source = this.range ? this.source.base : this.source;
scope = o.scope;
name = this.name && this.name.compile(o, LEVEL_LIST);
index = this.index && this.index.compile(o, LEVEL_LIST);
if (name && !this.pattern) {
- scope.find(name, {
- immediate: true
- });
+ scope.find(name);
}
if (index) {
- scope.find(index, {
- immediate: true
- });
+ scope.find(index);
+ }
+ if (this.returns) {
+ rvar = scope.freeVariable('results');
}
- if (this.returns) rvar = scope.freeVariable('results');
ivar = (this.object && index) || scope.freeVariable('i');
kvar = (this.range && name) || index || ivar;
kvarAssign = kvar !== ivar ? "" + kvar + " = " : "";
- if (this.step && !this.range) stepvar = scope.freeVariable("step");
- if (this.pattern) name = ivar;
+ if (this.step && !this.range) {
+ stepvar = scope.freeVariable("step");
+ }
+ if (this.pattern) {
+ name = ivar;
+ }
varPart = '';
guardPart = '';
defPart = '';
@@ -2422,14 +2641,18 @@ define(function(require, exports, module) {
if (body.expressions.length > 1) {
body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
} else {
- if (this.guard) body = Block.wrap([new If(this.guard, body)]);
+ if (this.guard) {
+ body = Block.wrap([new If(this.guard, body)]);
+ }
}
}
if (this.pattern) {
body.expressions.unshift(new Assign(this.name, new Literal("" + svar + "[" + kvar + "]")));
}
defPart += this.pluckDirectCall(o, body);
- if (namePart) varPart = "\n" + idt1 + namePart + ";";
+ if (namePart) {
+ varPart = "\n" + idt1 + namePart + ";";
+ }
if (this.object) {
forPart = "" + kvar + " in " + svar;
if (this.own) {
@@ -2439,7 +2662,9 @@ define(function(require, exports, module) {
body = body.compile(merge(o, {
indent: idt1
}), LEVEL_TOP);
- if (body) body = '\n' + body + '\n';
+ if (body) {
+ body = '\n' + body + '\n';
+ }
return "" + defPart + (resultPart || '') + this.tab + "for (" + forPart + ") {" + guardPart + varPart + body + this.tab + "}" + (returnResult || '');
};
@@ -2450,7 +2675,9 @@ define(function(require, exports, module) {
for (idx = _i = 0, _len = _ref2.length; _i < _len; idx = ++_i) {
expr = _ref2[idx];
expr = expr.unwrapAll();
- if (!(expr instanceof Call)) continue;
+ if (!(expr instanceof Call)) {
+ continue;
+ }
val = expr.variable.unwrapAll();
if (!((val instanceof Code) || (val instanceof Value && ((_ref3 = val.base) != null ? _ref3.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((_ref4 = (_ref5 = val.properties[0].name) != null ? _ref5.value : void 0) === 'call' || _ref4 === 'apply')))) {
continue;
@@ -2458,7 +2685,9 @@ define(function(require, exports, module) {
fn = ((_ref6 = val.base) != null ? _ref6.unwrapAll() : void 0) || val;
ref = new Literal(o.scope.freeVariable('fn'));
base = new Value(ref);
- if (val.base) _ref7 = [base, val], val.base = _ref7[0], base = _ref7[1];
+ if (val.base) {
+ _ref7 = [base, val], val.base = _ref7[0], base = _ref7[1];
+ }
body.expressions[idx] = new Call(base, expr.args);
defs += this.tab + new Assign(ref, fn).compile(o, LEVEL_TOP) + ';\n';
}
@@ -2473,8 +2702,6 @@ define(function(require, exports, module) {
__extends(Switch, _super);
- Switch.name = 'Switch';
-
function Switch(subject, cases, otherwise) {
this.subject = subject;
this.cases = cases;
@@ -2495,7 +2722,9 @@ define(function(require, exports, module) {
_ref2 = this.cases;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
_ref3 = _ref2[_i], conds = _ref3[0], block = _ref3[1];
- if (block.jumps(o)) return block;
+ if (block.jumps(o)) {
+ return block;
+ }
}
return (_ref4 = this.otherwise) != null ? _ref4.jumps(o) : void 0;
};
@@ -2510,7 +2739,9 @@ define(function(require, exports, module) {
if (res) {
this.otherwise || (this.otherwise = new Block([new Literal('void 0')]));
}
- if ((_ref3 = this.otherwise) != null) _ref3.makeReturn(res);
+ if ((_ref3 = this.otherwise) != null) {
+ _ref3.makeReturn(res);
+ }
return this;
};
@@ -2525,11 +2756,17 @@ define(function(require, exports, module) {
_ref5 = flatten([conditions]);
for (_j = 0, _len1 = _ref5.length; _j < _len1; _j++) {
cond = _ref5[_j];
- if (!this.subject) cond = cond.invert();
+ if (!this.subject) {
+ cond = cond.invert();
+ }
code += idt1 + ("case " + (cond.compile(o, LEVEL_PAREN)) + ":\n");
}
- if (body = block.compile(o, LEVEL_TOP)) code += body + '\n';
- if (i === this.cases.length - 1 && !this.otherwise) break;
+ if (body = block.compile(o, LEVEL_TOP)) {
+ code += body + '\n';
+ }
+ if (i === this.cases.length - 1 && !this.otherwise) {
+ break;
+ }
expr = this.lastNonComment(block.expressions);
if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) {
continue;
@@ -2550,11 +2787,11 @@ define(function(require, exports, module) {
__extends(If, _super);
- If.name = 'If';
-
function If(condition, body, options) {
this.body = body;
- if (options == null) options = {};
+ if (options == null) {
+ options = {};
+ }
this.condition = options.type === 'unless' ? condition.invert() : condition;
this.elseBody = null;
this.isChain = false;
@@ -2619,7 +2856,7 @@ define(function(require, exports, module) {
};
If.prototype.compileStatement = function(o) {
- var body, bodyc, child, cond, exeq, ifPart, _ref2;
+ var body, child, cond, exeq, ifPart;
child = del(o, 'chainChild');
exeq = del(o, 'isExistentialEquals');
if (exeq) {
@@ -2630,14 +2867,13 @@ define(function(require, exports, module) {
cond = this.condition.compile(o, LEVEL_PAREN);
o.indent += TAB;
body = this.ensureBlock(this.body);
- bodyc = body.compile(o);
- if (1 === ((_ref2 = body.expressions) != null ? _ref2.length : void 0) && !this.elseBody && !child && bodyc && cond && -1 === (bodyc.indexOf('\n')) && 80 > cond.length + bodyc.length) {
- return "" + this.tab + "if (" + cond + ") " + (bodyc.replace(/^\s+/, ''));
+ ifPart = "if (" + cond + ") {\n" + (body.compile(o)) + "\n" + this.tab + "}";
+ if (!child) {
+ ifPart = this.tab + ifPart;
+ }
+ if (!this.elseBody) {
+ return ifPart;
}
- if (bodyc) bodyc = "\n" + bodyc + "\n" + this.tab;
- ifPart = "if (" + cond + ") {" + bodyc + "}";
- if (!child) ifPart = this.tab + ifPart;
- if (!this.elseBody) return ifPart;
return ifPart + ' else ' + (this.isChain ? (o.indent = this.tab, o.chainChild = true, this.elseBody.unwrap().compile(o, LEVEL_TOP)) : "{\n" + (this.elseBody.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}");
};
@@ -2665,13 +2901,17 @@ define(function(require, exports, module) {
Closure = {
wrap: function(expressions, statement, noReturn) {
var args, call, func, mentionsArgs, meth;
- if (expressions.jumps()) return expressions;
+ if (expressions.jumps()) {
+ return expressions;
+ }
func = new Code([], Block.wrap([expressions]));
args = [];
if ((mentionsArgs = expressions.contains(this.literalArgs)) || expressions.contains(this.literalThis)) {
meth = new Literal(mentionsArgs ? 'apply' : 'call');
args = [new Literal('this')];
- if (mentionsArgs) args.push(new Literal('arguments'));
+ if (mentionsArgs) {
+ args.push(new Literal('arguments'));
+ }
func = new Value(func, [new Access(meth)]);
}
func.noReturn = noReturn;
@@ -2686,13 +2926,15 @@ define(function(require, exports, module) {
return node instanceof Literal && node.value === 'arguments' && !node.asKey;
},
literalThis: function(node) {
- return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound);
+ return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound) || (node instanceof Call && node.isSuper);
}
};
unfoldSoak = function(o, parent, name) {
var ifn;
- if (!(ifn = parent[name].unfoldSoak(o))) return;
+ if (!(ifn = parent[name].unfoldSoak(o))) {
+ return;
+ }
parent[name] = ifn.body;
ifn.body = new Value(parent);
return ifn;
@@ -2700,7 +2942,7 @@ define(function(require, exports, module) {
UTILITIES = {
"extends": function() {
- return "function(child, parent) { for (var key in parent) { if (" + (utility('hasProp')) + ".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }";
+ return "function(child, parent) { for (var key in parent) { if (" + (utility('hasProp')) + ".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }";
},
bind: function() {
return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }';
@@ -2753,4 +2995,4 @@ define(function(require, exports, module) {
};
-});
+});
\ No newline at end of file
diff --git a/lib/ace/mode/coffee/parser.js b/lib/ace/mode/coffee/parser.js
index 553179ca..3fb271e6 100644
--- a/lib/ace/mode/coffee/parser.js
+++ b/lib/ace/mode/coffee/parser.js
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 2011 Jeremy Ashkenas
+/**
+ * Copyright (c) 2009-2012 Jeremy Ashkenas
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
@@ -26,12 +26,11 @@
define(function(require, exports, module) {
/* Jison generated parser */
-undefined
var parser = {trace: function trace() { },
yy: {},
-symbols_: {"error":2,"Root":3,"Body":4,"Block":5,"TERMINATOR":6,"Line":7,"Expression":8,"Statement":9,"Return":10,"Comment":11,"STATEMENT":12,"Value":13,"Invocation":14,"Code":15,"Operation":16,"Assign":17,"If":18,"Try":19,"While":20,"For":21,"Switch":22,"Class":23,"Throw":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"DEBUGGER":35,"BOOL":36,"Assignable":37,"=":38,"AssignObj":39,"ObjAssignable":40,":":41,"ThisProperty":42,"RETURN":43,"HERECOMMENT":44,"PARAM_START":45,"ParamList":46,"PARAM_END":47,"FuncGlyph":48,"->":49,"=>":50,"OptComma":51,",":52,"Param":53,"ParamVar":54,"...":55,"Array":56,"Object":57,"Splat":58,"SimpleAssignable":59,"Accessor":60,"Parenthetical":61,"Range":62,"This":63,".":64,"?.":65,"::":66,"Index":67,"INDEX_START":68,"IndexValue":69,"INDEX_END":70,"INDEX_SOAK":71,"Slice":72,"{":73,"AssignList":74,"}":75,"CLASS":76,"EXTENDS":77,"OptFuncExist":78,"Arguments":79,"SUPER":80,"FUNC_EXIST":81,"CALL_START":82,"CALL_END":83,"ArgList":84,"THIS":85,"@":86,"[":87,"]":88,"RangeDots":89,"..":90,"Arg":91,"SimpleArgs":92,"TRY":93,"Catch":94,"FINALLY":95,"CATCH":96,"THROW":97,"(":98,")":99,"WhileSource":100,"WHILE":101,"WHEN":102,"UNTIL":103,"Loop":104,"LOOP":105,"ForBody":106,"FOR":107,"ForStart":108,"ForSource":109,"ForVariables":110,"OWN":111,"ForValue":112,"FORIN":113,"FOROF":114,"BY":115,"SWITCH":116,"Whens":117,"ELSE":118,"When":119,"LEADING_WHEN":120,"IfBlock":121,"IF":122,"POST_IF":123,"UNARY":124,"-":125,"+":126,"--":127,"++":128,"?":129,"MATH":130,"SHIFT":131,"COMPARE":132,"LOGIC":133,"RELATION":134,"COMPOUND_ASSIGN":135,"$accept":0,"$end":1},
-terminals_: {2:"error",6:"TERMINATOR",12:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"BOOL",38:"=",41:":",43:"RETURN",44:"HERECOMMENT",45:"PARAM_START",47:"PARAM_END",49:"->",50:"=>",52:",",55:"...",64:".",65:"?.",66:"::",68:"INDEX_START",70:"INDEX_END",71:"INDEX_SOAK",73:"{",75:"}",76:"CLASS",77:"EXTENDS",80:"SUPER",81:"FUNC_EXIST",82:"CALL_START",83:"CALL_END",85:"THIS",86:"@",87:"[",88:"]",90:"..",93:"TRY",95:"FINALLY",96:"CATCH",97:"THROW",98:"(",99:")",101:"WHILE",102:"WHEN",103:"UNTIL",105:"LOOP",107:"FOR",111:"OWN",113:"FORIN",114:"FOROF",115:"BY",116:"SWITCH",118:"ELSE",120:"LEADING_WHEN",122:"IF",123:"POST_IF",124:"UNARY",125:"-",126:"+",127:"--",128:"++",129:"?",130:"MATH",131:"SHIFT",132:"COMPARE",133:"LOGIC",134:"RELATION",135:"COMPOUND_ASSIGN"},
-productions_: [0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[17,3],[17,4],[17,5],[39,1],[39,3],[39,5],[39,1],[40,1],[40,1],[40,1],[10,2],[10,1],[11,1],[15,5],[15,2],[48,1],[48,1],[51,0],[51,1],[46,0],[46,1],[46,3],[53,1],[53,2],[53,3],[54,1],[54,1],[54,1],[54,1],[58,2],[59,1],[59,2],[59,2],[59,1],[37,1],[37,1],[37,1],[13,1],[13,1],[13,1],[13,1],[13,1],[60,2],[60,2],[60,2],[60,1],[60,1],[67,3],[67,2],[69,1],[69,1],[57,4],[74,0],[74,1],[74,3],[74,4],[74,6],[23,1],[23,2],[23,3],[23,4],[23,2],[23,3],[23,4],[23,5],[14,3],[14,3],[14,1],[14,2],[78,0],[78,1],[79,2],[79,4],[63,1],[63,1],[42,2],[56,2],[56,4],[89,1],[89,1],[62,5],[72,3],[72,2],[72,2],[72,1],[84,1],[84,3],[84,4],[84,4],[84,6],[91,1],[91,1],[92,1],[92,3],[19,2],[19,3],[19,4],[19,5],[94,3],[24,2],[61,3],[61,5],[100,2],[100,4],[100,2],[100,4],[20,2],[20,2],[20,2],[20,1],[104,2],[104,2],[21,2],[21,2],[21,2],[106,2],[106,2],[108,2],[108,3],[112,1],[112,1],[112,1],[110,1],[110,3],[109,2],[109,2],[109,4],[109,4],[109,4],[109,6],[109,6],[22,5],[22,7],[22,4],[22,6],[117,1],[117,2],[119,3],[119,4],[121,3],[121,5],[18,1],[18,3],[18,3],[18,3],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,5],[16,3]],
+symbols_: {"error":2,"Root":3,"Body":4,"Block":5,"TERMINATOR":6,"Line":7,"Expression":8,"Statement":9,"Return":10,"Comment":11,"STATEMENT":12,"Value":13,"Invocation":14,"Code":15,"Operation":16,"Assign":17,"If":18,"Try":19,"While":20,"For":21,"Switch":22,"Class":23,"Throw":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"DEBUGGER":35,"UNDEFINED":36,"NULL":37,"BOOL":38,"Assignable":39,"=":40,"AssignObj":41,"ObjAssignable":42,":":43,"ThisProperty":44,"RETURN":45,"HERECOMMENT":46,"PARAM_START":47,"ParamList":48,"PARAM_END":49,"FuncGlyph":50,"->":51,"=>":52,"OptComma":53,",":54,"Param":55,"ParamVar":56,"...":57,"Array":58,"Object":59,"Splat":60,"SimpleAssignable":61,"Accessor":62,"Parenthetical":63,"Range":64,"This":65,".":66,"?.":67,"::":68,"Index":69,"INDEX_START":70,"IndexValue":71,"INDEX_END":72,"INDEX_SOAK":73,"Slice":74,"{":75,"AssignList":76,"}":77,"CLASS":78,"EXTENDS":79,"OptFuncExist":80,"Arguments":81,"SUPER":82,"FUNC_EXIST":83,"CALL_START":84,"CALL_END":85,"ArgList":86,"THIS":87,"@":88,"[":89,"]":90,"RangeDots":91,"..":92,"Arg":93,"SimpleArgs":94,"TRY":95,"Catch":96,"FINALLY":97,"CATCH":98,"THROW":99,"(":100,")":101,"WhileSource":102,"WHILE":103,"WHEN":104,"UNTIL":105,"Loop":106,"LOOP":107,"ForBody":108,"FOR":109,"ForStart":110,"ForSource":111,"ForVariables":112,"OWN":113,"ForValue":114,"FORIN":115,"FOROF":116,"BY":117,"SWITCH":118,"Whens":119,"ELSE":120,"When":121,"LEADING_WHEN":122,"IfBlock":123,"IF":124,"POST_IF":125,"UNARY":126,"-":127,"+":128,"--":129,"++":130,"?":131,"MATH":132,"SHIFT":133,"COMPARE":134,"LOGIC":135,"RELATION":136,"COMPOUND_ASSIGN":137,"$accept":0,"$end":1},
+terminals_: {2:"error",6:"TERMINATOR",12:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"UNDEFINED",37:"NULL",38:"BOOL",40:"=",43:":",45:"RETURN",46:"HERECOMMENT",47:"PARAM_START",49:"PARAM_END",51:"->",52:"=>",54:",",57:"...",66:".",67:"?.",68:"::",70:"INDEX_START",72:"INDEX_END",73:"INDEX_SOAK",75:"{",77:"}",78:"CLASS",79:"EXTENDS",82:"SUPER",83:"FUNC_EXIST",84:"CALL_START",85:"CALL_END",87:"THIS",88:"@",89:"[",90:"]",92:"..",95:"TRY",97:"FINALLY",98:"CATCH",99:"THROW",100:"(",101:")",103:"WHILE",104:"WHEN",105:"UNTIL",107:"LOOP",109:"FOR",113:"OWN",115:"FORIN",116:"FOROF",117:"BY",118:"SWITCH",120:"ELSE",122:"LEADING_WHEN",124:"IF",125:"POST_IF",126:"UNARY",127:"-",128:"+",129:"--",130:"++",131:"?",132:"MATH",133:"SHIFT",134:"COMPARE",135:"LOGIC",136:"RELATION",137:"COMPOUND_ASSIGN"},
+productions_: [0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[17,3],[17,4],[17,5],[41,1],[41,3],[41,5],[41,1],[42,1],[42,1],[42,1],[10,2],[10,1],[11,1],[15,5],[15,2],[50,1],[50,1],[53,0],[53,1],[48,0],[48,1],[48,3],[48,4],[48,6],[55,1],[55,2],[55,3],[56,1],[56,1],[56,1],[56,1],[60,2],[61,1],[61,2],[61,2],[61,1],[39,1],[39,1],[39,1],[13,1],[13,1],[13,1],[13,1],[13,1],[62,2],[62,2],[62,2],[62,1],[62,1],[69,3],[69,2],[71,1],[71,1],[59,4],[76,0],[76,1],[76,3],[76,4],[76,6],[23,1],[23,2],[23,3],[23,4],[23,2],[23,3],[23,4],[23,5],[14,3],[14,3],[14,1],[14,2],[80,0],[80,1],[81,2],[81,4],[65,1],[65,1],[44,2],[58,2],[58,4],[91,1],[91,1],[64,5],[74,3],[74,2],[74,2],[74,1],[86,1],[86,3],[86,4],[86,4],[86,6],[93,1],[93,1],[94,1],[94,3],[19,2],[19,3],[19,4],[19,5],[96,3],[24,2],[63,3],[63,5],[102,2],[102,4],[102,2],[102,4],[20,2],[20,2],[20,2],[20,1],[106,2],[106,2],[21,2],[21,2],[21,2],[108,2],[108,2],[110,2],[110,3],[114,1],[114,1],[114,1],[114,1],[112,1],[112,3],[111,2],[111,2],[111,4],[111,4],[111,4],[111,6],[111,6],[22,5],[22,7],[22,4],[22,6],[119,1],[119,2],[121,3],[121,4],[123,3],[123,5],[18,1],[18,3],[18,3],[18,3],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,5],[16,3]],
performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
var $0 = $$.length - 1;
@@ -100,90 +99,85 @@ case 31:this.$ = new yy.Literal($$[$0]);
break;
case 32:this.$ = new yy.Literal($$[$0]);
break;
-case 33:this.$ = (function () {
- var val;
- val = new yy.Literal($$[$0]);
- if ($$[$0] === 'undefined') val.isUndefined = true;
- return val;
- }());
+case 33:this.$ = new yy.Undefined;
break;
-case 34:this.$ = new yy.Assign($$[$0-2], $$[$0]);
+case 34:this.$ = new yy.Null;
break;
-case 35:this.$ = new yy.Assign($$[$0-3], $$[$0]);
+case 35:this.$ = new yy.Bool($$[$0]);
break;
-case 36:this.$ = new yy.Assign($$[$0-4], $$[$0-1]);
+case 36:this.$ = new yy.Assign($$[$0-2], $$[$0]);
break;
-case 37:this.$ = new yy.Value($$[$0]);
+case 37:this.$ = new yy.Assign($$[$0-3], $$[$0]);
break;
-case 38:this.$ = new yy.Assign(new yy.Value($$[$0-2]), $$[$0], 'object');
+case 38:this.$ = new yy.Assign($$[$0-4], $$[$0-1]);
break;
-case 39:this.$ = new yy.Assign(new yy.Value($$[$0-4]), $$[$0-1], 'object');
+case 39:this.$ = new yy.Value($$[$0]);
break;
-case 40:this.$ = $$[$0];
+case 40:this.$ = new yy.Assign(new yy.Value($$[$0-2]), $$[$0], 'object');
break;
-case 41:this.$ = $$[$0];
+case 41:this.$ = new yy.Assign(new yy.Value($$[$0-4]), $$[$0-1], 'object');
break;
case 42:this.$ = $$[$0];
break;
case 43:this.$ = $$[$0];
break;
-case 44:this.$ = new yy.Return($$[$0]);
+case 44:this.$ = $$[$0];
break;
-case 45:this.$ = new yy.Return;
+case 45:this.$ = $$[$0];
break;
-case 46:this.$ = new yy.Comment($$[$0]);
+case 46:this.$ = new yy.Return($$[$0]);
break;
-case 47:this.$ = new yy.Code($$[$0-3], $$[$0], $$[$0-1]);
+case 47:this.$ = new yy.Return;
break;
-case 48:this.$ = new yy.Code([], $$[$0], $$[$0-1]);
+case 48:this.$ = new yy.Comment($$[$0]);
break;
-case 49:this.$ = 'func';
+case 49:this.$ = new yy.Code($$[$0-3], $$[$0], $$[$0-1]);
break;
-case 50:this.$ = 'boundfunc';
+case 50:this.$ = new yy.Code([], $$[$0], $$[$0-1]);
break;
-case 51:this.$ = $$[$0];
+case 51:this.$ = 'func';
break;
-case 52:this.$ = $$[$0];
+case 52:this.$ = 'boundfunc';
break;
-case 53:this.$ = [];
+case 53:this.$ = $$[$0];
break;
-case 54:this.$ = [$$[$0]];
+case 54:this.$ = $$[$0];
break;
-case 55:this.$ = $$[$0-2].concat($$[$0]);
+case 55:this.$ = [];
break;
-case 56:this.$ = new yy.Param($$[$0]);
+case 56:this.$ = [$$[$0]];
break;
-case 57:this.$ = new yy.Param($$[$0-1], null, true);
+case 57:this.$ = $$[$0-2].concat($$[$0]);
break;
-case 58:this.$ = new yy.Param($$[$0-2], $$[$0]);
+case 58:this.$ = $$[$0-3].concat($$[$0]);
break;
-case 59:this.$ = $$[$0];
+case 59:this.$ = $$[$0-5].concat($$[$0-2]);
break;
-case 60:this.$ = $$[$0];
+case 60:this.$ = new yy.Param($$[$0]);
break;
-case 61:this.$ = $$[$0];
+case 61:this.$ = new yy.Param($$[$0-1], null, true);
break;
-case 62:this.$ = $$[$0];
+case 62:this.$ = new yy.Param($$[$0-2], $$[$0]);
break;
-case 63:this.$ = new yy.Splat($$[$0-1]);
+case 63:this.$ = $$[$0];
break;
-case 64:this.$ = new yy.Value($$[$0]);
+case 64:this.$ = $$[$0];
break;
-case 65:this.$ = $$[$0-1].add($$[$0]);
+case 65:this.$ = $$[$0];
break;
-case 66:this.$ = new yy.Value($$[$0-1], [].concat($$[$0]));
+case 66:this.$ = $$[$0];
break;
-case 67:this.$ = $$[$0];
+case 67:this.$ = new yy.Splat($$[$0-1]);
break;
-case 68:this.$ = $$[$0];
+case 68:this.$ = new yy.Value($$[$0]);
break;
-case 69:this.$ = new yy.Value($$[$0]);
+case 69:this.$ = $$[$0-1].add($$[$0]);
break;
-case 70:this.$ = new yy.Value($$[$0]);
+case 70:this.$ = new yy.Value($$[$0-1], [].concat($$[$0]));
break;
case 71:this.$ = $$[$0];
break;
-case 72:this.$ = new yy.Value($$[$0]);
+case 72:this.$ = $$[$0];
break;
case 73:this.$ = new yy.Value($$[$0]);
break;
@@ -191,293 +185,303 @@ case 74:this.$ = new yy.Value($$[$0]);
break;
case 75:this.$ = $$[$0];
break;
-case 76:this.$ = new yy.Access($$[$0]);
+case 76:this.$ = new yy.Value($$[$0]);
break;
-case 77:this.$ = new yy.Access($$[$0], 'soak');
+case 77:this.$ = new yy.Value($$[$0]);
break;
-case 78:this.$ = [new yy.Access(new yy.Literal('prototype')), new yy.Access($$[$0])];
+case 78:this.$ = new yy.Value($$[$0]);
break;
-case 79:this.$ = new yy.Access(new yy.Literal('prototype'));
+case 79:this.$ = $$[$0];
break;
-case 80:this.$ = $$[$0];
+case 80:this.$ = new yy.Access($$[$0]);
break;
-case 81:this.$ = $$[$0-1];
+case 81:this.$ = new yy.Access($$[$0], 'soak');
break;
-case 82:this.$ = yy.extend($$[$0], {
+case 82:this.$ = [new yy.Access(new yy.Literal('prototype')), new yy.Access($$[$0])];
+break;
+case 83:this.$ = new yy.Access(new yy.Literal('prototype'));
+break;
+case 84:this.$ = $$[$0];
+break;
+case 85:this.$ = $$[$0-1];
+break;
+case 86:this.$ = yy.extend($$[$0], {
soak: true
});
break;
-case 83:this.$ = new yy.Index($$[$0]);
+case 87:this.$ = new yy.Index($$[$0]);
break;
-case 84:this.$ = new yy.Slice($$[$0]);
+case 88:this.$ = new yy.Slice($$[$0]);
break;
-case 85:this.$ = new yy.Obj($$[$0-2], $$[$0-3].generated);
+case 89:this.$ = new yy.Obj($$[$0-2], $$[$0-3].generated);
break;
-case 86:this.$ = [];
+case 90:this.$ = [];
break;
-case 87:this.$ = [$$[$0]];
+case 91:this.$ = [$$[$0]];
break;
-case 88:this.$ = $$[$0-2].concat($$[$0]);
+case 92:this.$ = $$[$0-2].concat($$[$0]);
break;
-case 89:this.$ = $$[$0-3].concat($$[$0]);
+case 93:this.$ = $$[$0-3].concat($$[$0]);
break;
-case 90:this.$ = $$[$0-5].concat($$[$0-2]);
+case 94:this.$ = $$[$0-5].concat($$[$0-2]);
break;
-case 91:this.$ = new yy.Class;
+case 95:this.$ = new yy.Class;
break;
-case 92:this.$ = new yy.Class(null, null, $$[$0]);
+case 96:this.$ = new yy.Class(null, null, $$[$0]);
break;
-case 93:this.$ = new yy.Class(null, $$[$0]);
+case 97:this.$ = new yy.Class(null, $$[$0]);
break;
-case 94:this.$ = new yy.Class(null, $$[$0-1], $$[$0]);
+case 98:this.$ = new yy.Class(null, $$[$0-1], $$[$0]);
break;
-case 95:this.$ = new yy.Class($$[$0]);
+case 99:this.$ = new yy.Class($$[$0]);
break;
-case 96:this.$ = new yy.Class($$[$0-1], null, $$[$0]);
+case 100:this.$ = new yy.Class($$[$0-1], null, $$[$0]);
break;
-case 97:this.$ = new yy.Class($$[$0-2], $$[$0]);
+case 101:this.$ = new yy.Class($$[$0-2], $$[$0]);
break;
-case 98:this.$ = new yy.Class($$[$0-3], $$[$0-1], $$[$0]);
+case 102:this.$ = new yy.Class($$[$0-3], $$[$0-1], $$[$0]);
break;
-case 99:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
+case 103:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
break;
-case 100:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
+case 104:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
break;
-case 101:this.$ = new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]);
+case 105:this.$ = new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]);
break;
-case 102:this.$ = new yy.Call('super', $$[$0]);
+case 106:this.$ = new yy.Call('super', $$[$0]);
break;
-case 103:this.$ = false;
+case 107:this.$ = false;
break;
-case 104:this.$ = true;
+case 108:this.$ = true;
break;
-case 105:this.$ = [];
+case 109:this.$ = [];
break;
-case 106:this.$ = $$[$0-2];
+case 110:this.$ = $$[$0-2];
break;
-case 107:this.$ = new yy.Value(new yy.Literal('this'));
+case 111:this.$ = new yy.Value(new yy.Literal('this'));
break;
-case 108:this.$ = new yy.Value(new yy.Literal('this'));
+case 112:this.$ = new yy.Value(new yy.Literal('this'));
break;
-case 109:this.$ = new yy.Value(new yy.Literal('this'), [new yy.Access($$[$0])], 'this');
+case 113:this.$ = new yy.Value(new yy.Literal('this'), [new yy.Access($$[$0])], 'this');
break;
-case 110:this.$ = new yy.Arr([]);
+case 114:this.$ = new yy.Arr([]);
break;
-case 111:this.$ = new yy.Arr($$[$0-2]);
+case 115:this.$ = new yy.Arr($$[$0-2]);
break;
-case 112:this.$ = 'inclusive';
+case 116:this.$ = 'inclusive';
break;
-case 113:this.$ = 'exclusive';
+case 117:this.$ = 'exclusive';
break;
-case 114:this.$ = new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]);
+case 118:this.$ = new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]);
break;
-case 115:this.$ = new yy.Range($$[$0-2], $$[$0], $$[$0-1]);
+case 119:this.$ = new yy.Range($$[$0-2], $$[$0], $$[$0-1]);
break;
-case 116:this.$ = new yy.Range($$[$0-1], null, $$[$0]);
+case 120:this.$ = new yy.Range($$[$0-1], null, $$[$0]);
break;
-case 117:this.$ = new yy.Range(null, $$[$0], $$[$0-1]);
+case 121:this.$ = new yy.Range(null, $$[$0], $$[$0-1]);
break;
-case 118:this.$ = new yy.Range(null, null, $$[$0]);
+case 122:this.$ = new yy.Range(null, null, $$[$0]);
break;
-case 119:this.$ = [$$[$0]];
+case 123:this.$ = [$$[$0]];
break;
-case 120:this.$ = $$[$0-2].concat($$[$0]);
+case 124:this.$ = $$[$0-2].concat($$[$0]);
break;
-case 121:this.$ = $$[$0-3].concat($$[$0]);
+case 125:this.$ = $$[$0-3].concat($$[$0]);
break;
-case 122:this.$ = $$[$0-2];
+case 126:this.$ = $$[$0-2];
break;
-case 123:this.$ = $$[$0-5].concat($$[$0-2]);
+case 127:this.$ = $$[$0-5].concat($$[$0-2]);
break;
-case 124:this.$ = $$[$0];
+case 128:this.$ = $$[$0];
break;
-case 125:this.$ = $$[$0];
+case 129:this.$ = $$[$0];
break;
-case 126:this.$ = $$[$0];
+case 130:this.$ = $$[$0];
break;
-case 127:this.$ = [].concat($$[$0-2], $$[$0]);
+case 131:this.$ = [].concat($$[$0-2], $$[$0]);
break;
-case 128:this.$ = new yy.Try($$[$0]);
+case 132:this.$ = new yy.Try($$[$0]);
break;
-case 129:this.$ = new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]);
+case 133:this.$ = new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]);
break;
-case 130:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]);
+case 134:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]);
break;
-case 131:this.$ = new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]);
+case 135:this.$ = new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]);
break;
-case 132:this.$ = [$$[$0-1], $$[$0]];
+case 136:this.$ = [$$[$0-1], $$[$0]];
break;
-case 133:this.$ = new yy.Throw($$[$0]);
+case 137:this.$ = new yy.Throw($$[$0]);
break;
-case 134:this.$ = new yy.Parens($$[$0-1]);
+case 138:this.$ = new yy.Parens($$[$0-1]);
break;
-case 135:this.$ = new yy.Parens($$[$0-2]);
+case 139:this.$ = new yy.Parens($$[$0-2]);
break;
-case 136:this.$ = new yy.While($$[$0]);
+case 140:this.$ = new yy.While($$[$0]);
break;
-case 137:this.$ = new yy.While($$[$0-2], {
+case 141:this.$ = new yy.While($$[$0-2], {
guard: $$[$0]
});
break;
-case 138:this.$ = new yy.While($$[$0], {
+case 142:this.$ = new yy.While($$[$0], {
invert: true
});
break;
-case 139:this.$ = new yy.While($$[$0-2], {
+case 143:this.$ = new yy.While($$[$0-2], {
invert: true,
guard: $$[$0]
});
break;
-case 140:this.$ = $$[$0-1].addBody($$[$0]);
+case 144:this.$ = $$[$0-1].addBody($$[$0]);
break;
-case 141:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
+case 145:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
break;
-case 142:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
+case 146:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
break;
-case 143:this.$ = $$[$0];
+case 147:this.$ = $$[$0];
break;
-case 144:this.$ = new yy.While(new yy.Literal('true')).addBody($$[$0]);
+case 148:this.$ = new yy.While(new yy.Literal('true')).addBody($$[$0]);
break;
-case 145:this.$ = new yy.While(new yy.Literal('true')).addBody(yy.Block.wrap([$$[$0]]));
+case 149:this.$ = new yy.While(new yy.Literal('true')).addBody(yy.Block.wrap([$$[$0]]));
break;
-case 146:this.$ = new yy.For($$[$0-1], $$[$0]);
+case 150:this.$ = new yy.For($$[$0-1], $$[$0]);
break;
-case 147:this.$ = new yy.For($$[$0-1], $$[$0]);
+case 151:this.$ = new yy.For($$[$0-1], $$[$0]);
break;
-case 148:this.$ = new yy.For($$[$0], $$[$0-1]);
+case 152:this.$ = new yy.For($$[$0], $$[$0-1]);
break;
-case 149:this.$ = {
+case 153:this.$ = {
source: new yy.Value($$[$0])
};
break;
-case 150:this.$ = (function () {
+case 154:this.$ = (function () {
$$[$0].own = $$[$0-1].own;
$$[$0].name = $$[$0-1][0];
$$[$0].index = $$[$0-1][1];
return $$[$0];
}());
break;
-case 151:this.$ = $$[$0];
+case 155:this.$ = $$[$0];
break;
-case 152:this.$ = (function () {
+case 156:this.$ = (function () {
$$[$0].own = true;
return $$[$0];
}());
break;
-case 153:this.$ = $$[$0];
+case 157:this.$ = $$[$0];
break;
-case 154:this.$ = new yy.Value($$[$0]);
+case 158:this.$ = $$[$0];
break;
-case 155:this.$ = new yy.Value($$[$0]);
+case 159:this.$ = new yy.Value($$[$0]);
break;
-case 156:this.$ = [$$[$0]];
+case 160:this.$ = new yy.Value($$[$0]);
break;
-case 157:this.$ = [$$[$0-2], $$[$0]];
+case 161:this.$ = [$$[$0]];
break;
-case 158:this.$ = {
+case 162:this.$ = [$$[$0-2], $$[$0]];
+break;
+case 163:this.$ = {
source: $$[$0]
};
break;
-case 159:this.$ = {
+case 164:this.$ = {
source: $$[$0],
object: true
};
break;
-case 160:this.$ = {
+case 165:this.$ = {
source: $$[$0-2],
guard: $$[$0]
};
break;
-case 161:this.$ = {
+case 166:this.$ = {
source: $$[$0-2],
guard: $$[$0],
object: true
};
break;
-case 162:this.$ = {
+case 167:this.$ = {
source: $$[$0-2],
step: $$[$0]
};
break;
-case 163:this.$ = {
+case 168:this.$ = {
source: $$[$0-4],
guard: $$[$0-2],
step: $$[$0]
};
break;
-case 164:this.$ = {
+case 169:this.$ = {
source: $$[$0-4],
step: $$[$0-2],
guard: $$[$0]
};
break;
-case 165:this.$ = new yy.Switch($$[$0-3], $$[$0-1]);
+case 170:this.$ = new yy.Switch($$[$0-3], $$[$0-1]);
break;
-case 166:this.$ = new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]);
+case 171:this.$ = new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]);
break;
-case 167:this.$ = new yy.Switch(null, $$[$0-1]);
+case 172:this.$ = new yy.Switch(null, $$[$0-1]);
break;
-case 168:this.$ = new yy.Switch(null, $$[$0-3], $$[$0-1]);
+case 173:this.$ = new yy.Switch(null, $$[$0-3], $$[$0-1]);
break;
-case 169:this.$ = $$[$0];
+case 174:this.$ = $$[$0];
break;
-case 170:this.$ = $$[$0-1].concat($$[$0]);
+case 175:this.$ = $$[$0-1].concat($$[$0]);
break;
-case 171:this.$ = [[$$[$0-1], $$[$0]]];
+case 176:this.$ = [[$$[$0-1], $$[$0]]];
break;
-case 172:this.$ = [[$$[$0-2], $$[$0-1]]];
+case 177:this.$ = [[$$[$0-2], $$[$0-1]]];
break;
-case 173:this.$ = new yy.If($$[$0-1], $$[$0], {
+case 178:this.$ = new yy.If($$[$0-1], $$[$0], {
type: $$[$0-2]
});
break;
-case 174:this.$ = $$[$0-4].addElse(new yy.If($$[$0-1], $$[$0], {
+case 179:this.$ = $$[$0-4].addElse(new yy.If($$[$0-1], $$[$0], {
type: $$[$0-2]
}));
break;
-case 175:this.$ = $$[$0];
+case 180:this.$ = $$[$0];
break;
-case 176:this.$ = $$[$0-2].addElse($$[$0]);
+case 181:this.$ = $$[$0-2].addElse($$[$0]);
break;
-case 177:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
+case 182:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
type: $$[$0-1],
statement: true
});
break;
-case 178:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
+case 183:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
type: $$[$0-1],
statement: true
});
break;
-case 179:this.$ = new yy.Op($$[$0-1], $$[$0]);
+case 184:this.$ = new yy.Op($$[$0-1], $$[$0]);
break;
-case 180:this.$ = new yy.Op('-', $$[$0]);
+case 185:this.$ = new yy.Op('-', $$[$0]);
break;
-case 181:this.$ = new yy.Op('+', $$[$0]);
+case 186:this.$ = new yy.Op('+', $$[$0]);
break;
-case 182:this.$ = new yy.Op('--', $$[$0]);
+case 187:this.$ = new yy.Op('--', $$[$0]);
break;
-case 183:this.$ = new yy.Op('++', $$[$0]);
+case 188:this.$ = new yy.Op('++', $$[$0]);
break;
-case 184:this.$ = new yy.Op('--', $$[$0-1], null, true);
+case 189:this.$ = new yy.Op('--', $$[$0-1], null, true);
break;
-case 185:this.$ = new yy.Op('++', $$[$0-1], null, true);
+case 190:this.$ = new yy.Op('++', $$[$0-1], null, true);
break;
-case 186:this.$ = new yy.Existence($$[$0-1]);
+case 191:this.$ = new yy.Existence($$[$0-1]);
break;
-case 187:this.$ = new yy.Op('+', $$[$0-2], $$[$0]);
+case 192:this.$ = new yy.Op('+', $$[$0-2], $$[$0]);
break;
-case 188:this.$ = new yy.Op('-', $$[$0-2], $$[$0]);
+case 193:this.$ = new yy.Op('-', $$[$0-2], $$[$0]);
break;
-case 189:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
+case 194:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
break;
-case 190:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
+case 195:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
break;
-case 191:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
+case 196:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
break;
-case 192:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
+case 197:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
break;
-case 193:this.$ = (function () {
+case 198:this.$ = (function () {
if ($$[$0-1].charAt(0) === '!') {
return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert();
} else {
@@ -485,119 +489,206 @@ case 193:this.$ = (function () {
}
}());
break;
-case 194:this.$ = new yy.Assign($$[$0-2], $$[$0], $$[$0-1]);
+case 199:this.$ = new yy.Assign($$[$0-2], $$[$0], $$[$0-1]);
break;
-case 195:this.$ = new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]);
+case 200:this.$ = new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]);
break;
-case 196:this.$ = new yy.Extends($$[$0-2], $$[$0]);
+case 201:this.$ = new yy.Extends($$[$0-2], $$[$0]);
break;
}
},
-table: [{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[3]},{1:[2,2],6:[1,72]},{6:[1,73]},{1:[2,4],6:[2,4],26:[2,4],99:[2,4]},{4:75,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[1,74],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,7],6:[2,7],26:[2,7],99:[2,7],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,8],6:[2,8],26:[2,8],99:[2,8],100:88,101:[1,63],103:[1,64],106:89,107:[1,66],108:67,123:[1,87]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],47:[2,12],52:[2,12],55:[2,12],60:91,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],70:[2,12],71:[1,98],75:[2,12],78:90,81:[1,92],82:[2,103],83:[2,12],88:[2,12],90:[2,12],99:[2,12],101:[2,12],102:[2,12],103:[2,12],107:[2,12],115:[2,12],123:[2,12],125:[2,12],126:[2,12],129:[2,12],130:[2,12],131:[2,12],132:[2,12],133:[2,12],134:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],47:[2,13],52:[2,13],55:[2,13],60:100,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],70:[2,13],71:[1,98],75:[2,13],78:99,81:[1,92],82:[2,103],83:[2,13],88:[2,13],90:[2,13],99:[2,13],101:[2,13],102:[2,13],103:[2,13],107:[2,13],115:[2,13],123:[2,13],125:[2,13],126:[2,13],129:[2,13],130:[2,13],131:[2,13],132:[2,13],133:[2,13],134:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],47:[2,14],52:[2,14],55:[2,14],70:[2,14],75:[2,14],83:[2,14],88:[2,14],90:[2,14],99:[2,14],101:[2,14],102:[2,14],103:[2,14],107:[2,14],115:[2,14],123:[2,14],125:[2,14],126:[2,14],129:[2,14],130:[2,14],131:[2,14],132:[2,14],133:[2,14],134:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],47:[2,15],52:[2,15],55:[2,15],70:[2,15],75:[2,15],83:[2,15],88:[2,15],90:[2,15],99:[2,15],101:[2,15],102:[2,15],103:[2,15],107:[2,15],115:[2,15],123:[2,15],125:[2,15],126:[2,15],129:[2,15],130:[2,15],131:[2,15],132:[2,15],133:[2,15],134:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],47:[2,16],52:[2,16],55:[2,16],70:[2,16],75:[2,16],83:[2,16],88:[2,16],90:[2,16],99:[2,16],101:[2,16],102:[2,16],103:[2,16],107:[2,16],115:[2,16],123:[2,16],125:[2,16],126:[2,16],129:[2,16],130:[2,16],131:[2,16],132:[2,16],133:[2,16],134:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],47:[2,17],52:[2,17],55:[2,17],70:[2,17],75:[2,17],83:[2,17],88:[2,17],90:[2,17],99:[2,17],101:[2,17],102:[2,17],103:[2,17],107:[2,17],115:[2,17],123:[2,17],125:[2,17],126:[2,17],129:[2,17],130:[2,17],131:[2,17],132:[2,17],133:[2,17],134:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],47:[2,18],52:[2,18],55:[2,18],70:[2,18],75:[2,18],83:[2,18],88:[2,18],90:[2,18],99:[2,18],101:[2,18],102:[2,18],103:[2,18],107:[2,18],115:[2,18],123:[2,18],125:[2,18],126:[2,18],129:[2,18],130:[2,18],131:[2,18],132:[2,18],133:[2,18],134:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],47:[2,19],52:[2,19],55:[2,19],70:[2,19],75:[2,19],83:[2,19],88:[2,19],90:[2,19],99:[2,19],101:[2,19],102:[2,19],103:[2,19],107:[2,19],115:[2,19],123:[2,19],125:[2,19],126:[2,19],129:[2,19],130:[2,19],131:[2,19],132:[2,19],133:[2,19],134:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],47:[2,20],52:[2,20],55:[2,20],70:[2,20],75:[2,20],83:[2,20],88:[2,20],90:[2,20],99:[2,20],101:[2,20],102:[2,20],103:[2,20],107:[2,20],115:[2,20],123:[2,20],125:[2,20],126:[2,20],129:[2,20],130:[2,20],131:[2,20],132:[2,20],133:[2,20],134:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],47:[2,21],52:[2,21],55:[2,21],70:[2,21],75:[2,21],83:[2,21],88:[2,21],90:[2,21],99:[2,21],101:[2,21],102:[2,21],103:[2,21],107:[2,21],115:[2,21],123:[2,21],125:[2,21],126:[2,21],129:[2,21],130:[2,21],131:[2,21],132:[2,21],133:[2,21],134:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],47:[2,22],52:[2,22],55:[2,22],70:[2,22],75:[2,22],83:[2,22],88:[2,22],90:[2,22],99:[2,22],101:[2,22],102:[2,22],103:[2,22],107:[2,22],115:[2,22],123:[2,22],125:[2,22],126:[2,22],129:[2,22],130:[2,22],131:[2,22],132:[2,22],133:[2,22],134:[2,22]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],47:[2,23],52:[2,23],55:[2,23],70:[2,23],75:[2,23],83:[2,23],88:[2,23],90:[2,23],99:[2,23],101:[2,23],102:[2,23],103:[2,23],107:[2,23],115:[2,23],123:[2,23],125:[2,23],126:[2,23],129:[2,23],130:[2,23],131:[2,23],132:[2,23],133:[2,23],134:[2,23]},{1:[2,9],6:[2,9],26:[2,9],99:[2,9],101:[2,9],103:[2,9],107:[2,9],123:[2,9]},{1:[2,10],6:[2,10],26:[2,10],99:[2,10],101:[2,10],103:[2,10],107:[2,10],123:[2,10]},{1:[2,11],6:[2,11],26:[2,11],99:[2,11],101:[2,11],103:[2,11],107:[2,11],123:[2,11]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],38:[1,101],47:[2,71],52:[2,71],55:[2,71],64:[2,71],65:[2,71],66:[2,71],68:[2,71],70:[2,71],71:[2,71],75:[2,71],81:[2,71],82:[2,71],83:[2,71],88:[2,71],90:[2,71],99:[2,71],101:[2,71],102:[2,71],103:[2,71],107:[2,71],115:[2,71],123:[2,71],125:[2,71],126:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],47:[2,72],52:[2,72],55:[2,72],64:[2,72],65:[2,72],66:[2,72],68:[2,72],70:[2,72],71:[2,72],75:[2,72],81:[2,72],82:[2,72],83:[2,72],88:[2,72],90:[2,72],99:[2,72],101:[2,72],102:[2,72],103:[2,72],107:[2,72],115:[2,72],123:[2,72],125:[2,72],126:[2,72],129:[2,72],130:[2,72],131:[2,72],132:[2,72],133:[2,72],134:[2,72]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],47:[2,73],52:[2,73],55:[2,73],64:[2,73],65:[2,73],66:[2,73],68:[2,73],70:[2,73],71:[2,73],75:[2,73],81:[2,73],82:[2,73],83:[2,73],88:[2,73],90:[2,73],99:[2,73],101:[2,73],102:[2,73],103:[2,73],107:[2,73],115:[2,73],123:[2,73],125:[2,73],126:[2,73],129:[2,73],130:[2,73],131:[2,73],132:[2,73],133:[2,73],134:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],47:[2,74],52:[2,74],55:[2,74],64:[2,74],65:[2,74],66:[2,74],68:[2,74],70:[2,74],71:[2,74],75:[2,74],81:[2,74],82:[2,74],83:[2,74],88:[2,74],90:[2,74],99:[2,74],101:[2,74],102:[2,74],103:[2,74],107:[2,74],115:[2,74],123:[2,74],125:[2,74],126:[2,74],129:[2,74],130:[2,74],131:[2,74],132:[2,74],133:[2,74],134:[2,74]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],47:[2,75],52:[2,75],55:[2,75],64:[2,75],65:[2,75],66:[2,75],68:[2,75],70:[2,75],71:[2,75],75:[2,75],81:[2,75],82:[2,75],83:[2,75],88:[2,75],90:[2,75],99:[2,75],101:[2,75],102:[2,75],103:[2,75],107:[2,75],115:[2,75],123:[2,75],125:[2,75],126:[2,75],129:[2,75],130:[2,75],131:[2,75],132:[2,75],133:[2,75],134:[2,75]},{1:[2,101],6:[2,101],25:[2,101],26:[2,101],47:[2,101],52:[2,101],55:[2,101],64:[2,101],65:[2,101],66:[2,101],68:[2,101],70:[2,101],71:[2,101],75:[2,101],79:102,81:[2,101],82:[1,103],83:[2,101],88:[2,101],90:[2,101],99:[2,101],101:[2,101],102:[2,101],103:[2,101],107:[2,101],115:[2,101],123:[2,101],125:[2,101],126:[2,101],129:[2,101],130:[2,101],131:[2,101],132:[2,101],133:[2,101],134:[2,101]},{27:107,28:[1,71],42:108,46:104,47:[2,53],52:[2,53],53:105,54:106,56:109,57:110,73:[1,68],86:[1,111],87:[1,112]},{5:113,25:[1,5]},{8:114,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:116,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:117,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{13:119,14:120,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,56:47,57:48,59:118,61:25,62:26,63:27,73:[1,68],80:[1,28],85:[1,56],86:[1,57],87:[1,55],98:[1,54]},{13:119,14:120,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,56:47,57:48,59:122,61:25,62:26,63:27,73:[1,68],80:[1,28],85:[1,56],86:[1,57],87:[1,55],98:[1,54]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],38:[2,68],47:[2,68],52:[2,68],55:[2,68],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,68],71:[2,68],75:[2,68],77:[1,126],81:[2,68],82:[2,68],83:[2,68],88:[2,68],90:[2,68],99:[2,68],101:[2,68],102:[2,68],103:[2,68],107:[2,68],115:[2,68],123:[2,68],125:[2,68],126:[2,68],127:[1,123],128:[1,124],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[1,125]},{1:[2,175],6:[2,175],25:[2,175],26:[2,175],47:[2,175],52:[2,175],55:[2,175],70:[2,175],75:[2,175],83:[2,175],88:[2,175],90:[2,175],99:[2,175],101:[2,175],102:[2,175],103:[2,175],107:[2,175],115:[2,175],118:[1,127],123:[2,175],125:[2,175],126:[2,175],129:[2,175],130:[2,175],131:[2,175],132:[2,175],133:[2,175],134:[2,175]},{5:128,25:[1,5]},{5:129,25:[1,5]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],47:[2,143],52:[2,143],55:[2,143],70:[2,143],75:[2,143],83:[2,143],88:[2,143],90:[2,143],99:[2,143],101:[2,143],102:[2,143],103:[2,143],107:[2,143],115:[2,143],123:[2,143],125:[2,143],126:[2,143],129:[2,143],130:[2,143],131:[2,143],132:[2,143],133:[2,143],134:[2,143]},{5:130,25:[1,5]},{8:131,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,132],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,91],5:133,6:[2,91],13:119,14:120,25:[1,5],26:[2,91],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,47:[2,91],52:[2,91],55:[2,91],56:47,57:48,59:135,61:25,62:26,63:27,70:[2,91],73:[1,68],75:[2,91],77:[1,134],80:[1,28],83:[2,91],85:[1,56],86:[1,57],87:[1,55],88:[2,91],90:[2,91],98:[1,54],99:[2,91],101:[2,91],102:[2,91],103:[2,91],107:[2,91],115:[2,91],123:[2,91],125:[2,91],126:[2,91],129:[2,91],130:[2,91],131:[2,91],132:[2,91],133:[2,91],134:[2,91]},{8:136,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,45],6:[2,45],8:137,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,45],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],99:[2,45],100:39,101:[2,45],103:[2,45],104:40,105:[1,65],106:41,107:[2,45],108:67,116:[1,42],121:37,122:[1,62],123:[2,45],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,46],6:[2,46],25:[2,46],26:[2,46],52:[2,46],75:[2,46],99:[2,46],101:[2,46],103:[2,46],107:[2,46],123:[2,46]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],38:[2,69],47:[2,69],52:[2,69],55:[2,69],64:[2,69],65:[2,69],66:[2,69],68:[2,69],70:[2,69],71:[2,69],75:[2,69],81:[2,69],82:[2,69],83:[2,69],88:[2,69],90:[2,69],99:[2,69],101:[2,69],102:[2,69],103:[2,69],107:[2,69],115:[2,69],123:[2,69],125:[2,69],126:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],38:[2,70],47:[2,70],52:[2,70],55:[2,70],64:[2,70],65:[2,70],66:[2,70],68:[2,70],70:[2,70],71:[2,70],75:[2,70],81:[2,70],82:[2,70],83:[2,70],88:[2,70],90:[2,70],99:[2,70],101:[2,70],102:[2,70],103:[2,70],107:[2,70],115:[2,70],123:[2,70],125:[2,70],126:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],47:[2,29],52:[2,29],55:[2,29],64:[2,29],65:[2,29],66:[2,29],68:[2,29],70:[2,29],71:[2,29],75:[2,29],81:[2,29],82:[2,29],83:[2,29],88:[2,29],90:[2,29],99:[2,29],101:[2,29],102:[2,29],103:[2,29],107:[2,29],115:[2,29],123:[2,29],125:[2,29],126:[2,29],129:[2,29],130:[2,29],131:[2,29],132:[2,29],133:[2,29],134:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],47:[2,30],52:[2,30],55:[2,30],64:[2,30],65:[2,30],66:[2,30],68:[2,30],70:[2,30],71:[2,30],75:[2,30],81:[2,30],82:[2,30],83:[2,30],88:[2,30],90:[2,30],99:[2,30],101:[2,30],102:[2,30],103:[2,30],107:[2,30],115:[2,30],123:[2,30],125:[2,30],126:[2,30],129:[2,30],130:[2,30],131:[2,30],132:[2,30],133:[2,30],134:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],47:[2,31],52:[2,31],55:[2,31],64:[2,31],65:[2,31],66:[2,31],68:[2,31],70:[2,31],71:[2,31],75:[2,31],81:[2,31],82:[2,31],83:[2,31],88:[2,31],90:[2,31],99:[2,31],101:[2,31],102:[2,31],103:[2,31],107:[2,31],115:[2,31],123:[2,31],125:[2,31],126:[2,31],129:[2,31],130:[2,31],131:[2,31],132:[2,31],133:[2,31],134:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],47:[2,32],52:[2,32],55:[2,32],64:[2,32],65:[2,32],66:[2,32],68:[2,32],70:[2,32],71:[2,32],75:[2,32],81:[2,32],82:[2,32],83:[2,32],88:[2,32],90:[2,32],99:[2,32],101:[2,32],102:[2,32],103:[2,32],107:[2,32],115:[2,32],123:[2,32],125:[2,32],126:[2,32],129:[2,32],130:[2,32],131:[2,32],132:[2,32],133:[2,32],134:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],47:[2,33],52:[2,33],55:[2,33],64:[2,33],65:[2,33],66:[2,33],68:[2,33],70:[2,33],71:[2,33],75:[2,33],81:[2,33],82:[2,33],83:[2,33],88:[2,33],90:[2,33],99:[2,33],101:[2,33],102:[2,33],103:[2,33],107:[2,33],115:[2,33],123:[2,33],125:[2,33],126:[2,33],129:[2,33],130:[2,33],131:[2,33],132:[2,33],133:[2,33],134:[2,33]},{4:138,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,139],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:140,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:142,85:[1,56],86:[1,57],87:[1,55],88:[1,141],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,107],6:[2,107],25:[2,107],26:[2,107],47:[2,107],52:[2,107],55:[2,107],64:[2,107],65:[2,107],66:[2,107],68:[2,107],70:[2,107],71:[2,107],75:[2,107],81:[2,107],82:[2,107],83:[2,107],88:[2,107],90:[2,107],99:[2,107],101:[2,107],102:[2,107],103:[2,107],107:[2,107],115:[2,107],123:[2,107],125:[2,107],126:[2,107],129:[2,107],130:[2,107],131:[2,107],132:[2,107],133:[2,107],134:[2,107]},{1:[2,108],6:[2,108],25:[2,108],26:[2,108],27:146,28:[1,71],47:[2,108],52:[2,108],55:[2,108],64:[2,108],65:[2,108],66:[2,108],68:[2,108],70:[2,108],71:[2,108],75:[2,108],81:[2,108],82:[2,108],83:[2,108],88:[2,108],90:[2,108],99:[2,108],101:[2,108],102:[2,108],103:[2,108],107:[2,108],115:[2,108],123:[2,108],125:[2,108],126:[2,108],129:[2,108],130:[2,108],131:[2,108],132:[2,108],133:[2,108],134:[2,108]},{25:[2,49]},{25:[2,50]},{1:[2,64],6:[2,64],25:[2,64],26:[2,64],38:[2,64],47:[2,64],52:[2,64],55:[2,64],64:[2,64],65:[2,64],66:[2,64],68:[2,64],70:[2,64],71:[2,64],75:[2,64],77:[2,64],81:[2,64],82:[2,64],83:[2,64],88:[2,64],90:[2,64],99:[2,64],101:[2,64],102:[2,64],103:[2,64],107:[2,64],115:[2,64],123:[2,64],125:[2,64],126:[2,64],127:[2,64],128:[2,64],129:[2,64],130:[2,64],131:[2,64],132:[2,64],133:[2,64],134:[2,64],135:[2,64]},{1:[2,67],6:[2,67],25:[2,67],26:[2,67],38:[2,67],47:[2,67],52:[2,67],55:[2,67],64:[2,67],65:[2,67],66:[2,67],68:[2,67],70:[2,67],71:[2,67],75:[2,67],77:[2,67],81:[2,67],82:[2,67],83:[2,67],88:[2,67],90:[2,67],99:[2,67],101:[2,67],102:[2,67],103:[2,67],107:[2,67],115:[2,67],123:[2,67],125:[2,67],126:[2,67],127:[2,67],128:[2,67],129:[2,67],130:[2,67],131:[2,67],132:[2,67],133:[2,67],134:[2,67],135:[2,67]},{8:147,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:148,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:149,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{5:150,8:151,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{27:156,28:[1,71],56:157,57:158,62:152,73:[1,68],87:[1,55],110:153,111:[1,154],112:155},{109:159,113:[1,160],114:[1,161]},{6:[2,86],11:165,25:[2,86],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:163,40:164,42:168,44:[1,46],52:[2,86],74:162,75:[2,86],86:[1,111]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],41:[2,27],47:[2,27],52:[2,27],55:[2,27],64:[2,27],65:[2,27],66:[2,27],68:[2,27],70:[2,27],71:[2,27],75:[2,27],81:[2,27],82:[2,27],83:[2,27],88:[2,27],90:[2,27],99:[2,27],101:[2,27],102:[2,27],103:[2,27],107:[2,27],115:[2,27],123:[2,27],125:[2,27],126:[2,27],129:[2,27],130:[2,27],131:[2,27],132:[2,27],133:[2,27],134:[2,27]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],41:[2,28],47:[2,28],52:[2,28],55:[2,28],64:[2,28],65:[2,28],66:[2,28],68:[2,28],70:[2,28],71:[2,28],75:[2,28],81:[2,28],82:[2,28],83:[2,28],88:[2,28],90:[2,28],99:[2,28],101:[2,28],102:[2,28],103:[2,28],107:[2,28],115:[2,28],123:[2,28],125:[2,28],126:[2,28],129:[2,28],130:[2,28],131:[2,28],132:[2,28],133:[2,28],134:[2,28]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],38:[2,26],41:[2,26],47:[2,26],52:[2,26],55:[2,26],64:[2,26],65:[2,26],66:[2,26],68:[2,26],70:[2,26],71:[2,26],75:[2,26],77:[2,26],81:[2,26],82:[2,26],83:[2,26],88:[2,26],90:[2,26],99:[2,26],101:[2,26],102:[2,26],103:[2,26],107:[2,26],113:[2,26],114:[2,26],115:[2,26],123:[2,26],125:[2,26],126:[2,26],127:[2,26],128:[2,26],129:[2,26],130:[2,26],131:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26]},{1:[2,6],6:[2,6],7:169,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,6],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],99:[2,6],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,3]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],47:[2,24],52:[2,24],55:[2,24],70:[2,24],75:[2,24],83:[2,24],88:[2,24],90:[2,24],95:[2,24],96:[2,24],99:[2,24],101:[2,24],102:[2,24],103:[2,24],107:[2,24],115:[2,24],118:[2,24],120:[2,24],123:[2,24],125:[2,24],126:[2,24],129:[2,24],130:[2,24],131:[2,24],132:[2,24],133:[2,24],134:[2,24]},{6:[1,72],26:[1,170]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],47:[2,186],52:[2,186],55:[2,186],70:[2,186],75:[2,186],83:[2,186],88:[2,186],90:[2,186],99:[2,186],101:[2,186],102:[2,186],103:[2,186],107:[2,186],115:[2,186],123:[2,186],125:[2,186],126:[2,186],129:[2,186],130:[2,186],131:[2,186],132:[2,186],133:[2,186],134:[2,186]},{8:171,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:172,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:173,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:174,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:175,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:176,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:177,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:178,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],47:[2,142],52:[2,142],55:[2,142],70:[2,142],75:[2,142],83:[2,142],88:[2,142],90:[2,142],99:[2,142],101:[2,142],102:[2,142],103:[2,142],107:[2,142],115:[2,142],123:[2,142],125:[2,142],126:[2,142],129:[2,142],130:[2,142],131:[2,142],132:[2,142],133:[2,142],134:[2,142]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],47:[2,147],52:[2,147],55:[2,147],70:[2,147],75:[2,147],83:[2,147],88:[2,147],90:[2,147],99:[2,147],101:[2,147],102:[2,147],103:[2,147],107:[2,147],115:[2,147],123:[2,147],125:[2,147],126:[2,147],129:[2,147],130:[2,147],131:[2,147],132:[2,147],133:[2,147],134:[2,147]},{8:179,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],47:[2,141],52:[2,141],55:[2,141],70:[2,141],75:[2,141],83:[2,141],88:[2,141],90:[2,141],99:[2,141],101:[2,141],102:[2,141],103:[2,141],107:[2,141],115:[2,141],123:[2,141],125:[2,141],126:[2,141],129:[2,141],130:[2,141],131:[2,141],132:[2,141],133:[2,141],134:[2,141]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],47:[2,146],52:[2,146],55:[2,146],70:[2,146],75:[2,146],83:[2,146],88:[2,146],90:[2,146],99:[2,146],101:[2,146],102:[2,146],103:[2,146],107:[2,146],115:[2,146],123:[2,146],125:[2,146],126:[2,146],129:[2,146],130:[2,146],131:[2,146],132:[2,146],133:[2,146],134:[2,146]},{79:180,82:[1,103]},{1:[2,65],6:[2,65],25:[2,65],26:[2,65],38:[2,65],47:[2,65],52:[2,65],55:[2,65],64:[2,65],65:[2,65],66:[2,65],68:[2,65],70:[2,65],71:[2,65],75:[2,65],77:[2,65],81:[2,65],82:[2,65],83:[2,65],88:[2,65],90:[2,65],99:[2,65],101:[2,65],102:[2,65],103:[2,65],107:[2,65],115:[2,65],123:[2,65],125:[2,65],126:[2,65],127:[2,65],128:[2,65],129:[2,65],130:[2,65],131:[2,65],132:[2,65],133:[2,65],134:[2,65],135:[2,65]},{82:[2,104]},{27:181,28:[1,71]},{27:182,28:[1,71]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],27:183,28:[1,71],38:[2,79],47:[2,79],52:[2,79],55:[2,79],64:[2,79],65:[2,79],66:[2,79],68:[2,79],70:[2,79],71:[2,79],75:[2,79],77:[2,79],81:[2,79],82:[2,79],83:[2,79],88:[2,79],90:[2,79],99:[2,79],101:[2,79],102:[2,79],103:[2,79],107:[2,79],115:[2,79],123:[2,79],125:[2,79],126:[2,79],127:[2,79],128:[2,79],129:[2,79],130:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],38:[2,80],47:[2,80],52:[2,80],55:[2,80],64:[2,80],65:[2,80],66:[2,80],68:[2,80],70:[2,80],71:[2,80],75:[2,80],77:[2,80],81:[2,80],82:[2,80],83:[2,80],88:[2,80],90:[2,80],99:[2,80],101:[2,80],102:[2,80],103:[2,80],107:[2,80],115:[2,80],123:[2,80],125:[2,80],126:[2,80],127:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80]},{8:185,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],55:[1,189],56:47,57:48,59:36,61:25,62:26,63:27,69:184,72:186,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],89:187,90:[1,188],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{67:190,68:[1,97],71:[1,98]},{79:191,82:[1,103]},{1:[2,66],6:[2,66],25:[2,66],26:[2,66],38:[2,66],47:[2,66],52:[2,66],55:[2,66],64:[2,66],65:[2,66],66:[2,66],68:[2,66],70:[2,66],71:[2,66],75:[2,66],77:[2,66],81:[2,66],82:[2,66],83:[2,66],88:[2,66],90:[2,66],99:[2,66],101:[2,66],102:[2,66],103:[2,66],107:[2,66],115:[2,66],123:[2,66],125:[2,66],126:[2,66],127:[2,66],128:[2,66],129:[2,66],130:[2,66],131:[2,66],132:[2,66],133:[2,66],134:[2,66],135:[2,66]},{6:[1,193],8:192,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,194],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],47:[2,102],52:[2,102],55:[2,102],64:[2,102],65:[2,102],66:[2,102],68:[2,102],70:[2,102],71:[2,102],75:[2,102],81:[2,102],82:[2,102],83:[2,102],88:[2,102],90:[2,102],99:[2,102],101:[2,102],102:[2,102],103:[2,102],107:[2,102],115:[2,102],123:[2,102],125:[2,102],126:[2,102],129:[2,102],130:[2,102],131:[2,102],132:[2,102],133:[2,102],134:[2,102]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],83:[1,195],84:196,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{47:[1,198],52:[1,199]},{47:[2,54],52:[2,54]},{38:[1,201],47:[2,56],52:[2,56],55:[1,200]},{38:[2,59],47:[2,59],52:[2,59],55:[2,59]},{38:[2,60],47:[2,60],52:[2,60],55:[2,60]},{38:[2,61],47:[2,61],52:[2,61],55:[2,61]},{38:[2,62],47:[2,62],52:[2,62],55:[2,62]},{27:146,28:[1,71]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:142,85:[1,56],86:[1,57],87:[1,55],88:[1,141],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],47:[2,48],52:[2,48],55:[2,48],70:[2,48],75:[2,48],83:[2,48],88:[2,48],90:[2,48],99:[2,48],101:[2,48],102:[2,48],103:[2,48],107:[2,48],115:[2,48],123:[2,48],125:[2,48],126:[2,48],129:[2,48],130:[2,48],131:[2,48],132:[2,48],133:[2,48],134:[2,48]},{1:[2,179],6:[2,179],25:[2,179],26:[2,179],47:[2,179],52:[2,179],55:[2,179],70:[2,179],75:[2,179],83:[2,179],88:[2,179],90:[2,179],99:[2,179],100:85,101:[2,179],102:[2,179],103:[2,179],106:86,107:[2,179],108:67,115:[2,179],123:[2,179],125:[2,179],126:[2,179],129:[1,76],130:[2,179],131:[2,179],132:[2,179],133:[2,179],134:[2,179]},{100:88,101:[1,63],103:[1,64],106:89,107:[1,66],108:67,123:[1,87]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],47:[2,180],52:[2,180],55:[2,180],70:[2,180],75:[2,180],83:[2,180],88:[2,180],90:[2,180],99:[2,180],100:85,101:[2,180],102:[2,180],103:[2,180],106:86,107:[2,180],108:67,115:[2,180],123:[2,180],125:[2,180],126:[2,180],129:[1,76],130:[2,180],131:[2,180],132:[2,180],133:[2,180],134:[2,180]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],47:[2,181],52:[2,181],55:[2,181],70:[2,181],75:[2,181],83:[2,181],88:[2,181],90:[2,181],99:[2,181],100:85,101:[2,181],102:[2,181],103:[2,181],106:86,107:[2,181],108:67,115:[2,181],123:[2,181],125:[2,181],126:[2,181],129:[1,76],130:[2,181],131:[2,181],132:[2,181],133:[2,181],134:[2,181]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],47:[2,182],52:[2,182],55:[2,182],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,182],71:[2,68],75:[2,182],81:[2,68],82:[2,68],83:[2,182],88:[2,182],90:[2,182],99:[2,182],101:[2,182],102:[2,182],103:[2,182],107:[2,182],115:[2,182],123:[2,182],125:[2,182],126:[2,182],129:[2,182],130:[2,182],131:[2,182],132:[2,182],133:[2,182],134:[2,182]},{60:91,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],71:[1,98],78:90,81:[1,92],82:[2,103]},{60:100,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],71:[1,98],78:99,81:[1,92],82:[2,103]},{64:[2,71],65:[2,71],66:[2,71],68:[2,71],71:[2,71],81:[2,71],82:[2,71]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],47:[2,183],52:[2,183],55:[2,183],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,183],71:[2,68],75:[2,183],81:[2,68],82:[2,68],83:[2,183],88:[2,183],90:[2,183],99:[2,183],101:[2,183],102:[2,183],103:[2,183],107:[2,183],115:[2,183],123:[2,183],125:[2,183],126:[2,183],129:[2,183],130:[2,183],131:[2,183],132:[2,183],133:[2,183],134:[2,183]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],47:[2,184],52:[2,184],55:[2,184],70:[2,184],75:[2,184],83:[2,184],88:[2,184],90:[2,184],99:[2,184],101:[2,184],102:[2,184],103:[2,184],107:[2,184],115:[2,184],123:[2,184],125:[2,184],126:[2,184],129:[2,184],130:[2,184],131:[2,184],132:[2,184],133:[2,184],134:[2,184]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],47:[2,185],52:[2,185],55:[2,185],70:[2,185],75:[2,185],83:[2,185],88:[2,185],90:[2,185],99:[2,185],101:[2,185],102:[2,185],103:[2,185],107:[2,185],115:[2,185],123:[2,185],125:[2,185],126:[2,185],129:[2,185],130:[2,185],131:[2,185],132:[2,185],133:[2,185],134:[2,185]},{8:202,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,203],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:204,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{5:205,25:[1,5],122:[1,206]},{1:[2,128],6:[2,128],25:[2,128],26:[2,128],47:[2,128],52:[2,128],55:[2,128],70:[2,128],75:[2,128],83:[2,128],88:[2,128],90:[2,128],94:207,95:[1,208],96:[1,209],99:[2,128],101:[2,128],102:[2,128],103:[2,128],107:[2,128],115:[2,128],123:[2,128],125:[2,128],126:[2,128],129:[2,128],130:[2,128],131:[2,128],132:[2,128],133:[2,128],134:[2,128]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],47:[2,140],52:[2,140],55:[2,140],70:[2,140],75:[2,140],83:[2,140],88:[2,140],90:[2,140],99:[2,140],101:[2,140],102:[2,140],103:[2,140],107:[2,140],115:[2,140],123:[2,140],125:[2,140],126:[2,140],129:[2,140],130:[2,140],131:[2,140],132:[2,140],133:[2,140],134:[2,140]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],47:[2,148],52:[2,148],55:[2,148],70:[2,148],75:[2,148],83:[2,148],88:[2,148],90:[2,148],99:[2,148],101:[2,148],102:[2,148],103:[2,148],107:[2,148],115:[2,148],123:[2,148],125:[2,148],126:[2,148],129:[2,148],130:[2,148],131:[2,148],132:[2,148],133:[2,148],134:[2,148]},{25:[1,210],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{117:211,119:212,120:[1,213]},{1:[2,92],6:[2,92],25:[2,92],26:[2,92],47:[2,92],52:[2,92],55:[2,92],70:[2,92],75:[2,92],83:[2,92],88:[2,92],90:[2,92],99:[2,92],101:[2,92],102:[2,92],103:[2,92],107:[2,92],115:[2,92],123:[2,92],125:[2,92],126:[2,92],129:[2,92],130:[2,92],131:[2,92],132:[2,92],133:[2,92],134:[2,92]},{8:214,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,95],5:215,6:[2,95],25:[1,5],26:[2,95],47:[2,95],52:[2,95],55:[2,95],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,95],71:[2,68],75:[2,95],77:[1,216],81:[2,68],82:[2,68],83:[2,95],88:[2,95],90:[2,95],99:[2,95],101:[2,95],102:[2,95],103:[2,95],107:[2,95],115:[2,95],123:[2,95],125:[2,95],126:[2,95],129:[2,95],130:[2,95],131:[2,95],132:[2,95],133:[2,95],134:[2,95]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],47:[2,133],52:[2,133],55:[2,133],70:[2,133],75:[2,133],83:[2,133],88:[2,133],90:[2,133],99:[2,133],100:85,101:[2,133],102:[2,133],103:[2,133],106:86,107:[2,133],108:67,115:[2,133],123:[2,133],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,44],6:[2,44],26:[2,44],99:[2,44],100:85,101:[2,44],103:[2,44],106:86,107:[2,44],108:67,123:[2,44],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,72],99:[1,217]},{4:218,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,124],25:[2,124],52:[2,124],55:[1,220],88:[2,124],89:219,90:[1,188],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],38:[2,110],47:[2,110],52:[2,110],55:[2,110],64:[2,110],65:[2,110],66:[2,110],68:[2,110],70:[2,110],71:[2,110],75:[2,110],81:[2,110],82:[2,110],83:[2,110],88:[2,110],90:[2,110],99:[2,110],101:[2,110],102:[2,110],103:[2,110],107:[2,110],113:[2,110],114:[2,110],115:[2,110],123:[2,110],125:[2,110],126:[2,110],129:[2,110],130:[2,110],131:[2,110],132:[2,110],133:[2,110],134:[2,110]},{6:[2,51],25:[2,51],51:221,52:[1,222],88:[2,51]},{6:[2,119],25:[2,119],26:[2,119],52:[2,119],83:[2,119],88:[2,119]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:223,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,125],25:[2,125],26:[2,125],52:[2,125],83:[2,125],88:[2,125]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],38:[2,109],41:[2,109],47:[2,109],52:[2,109],55:[2,109],64:[2,109],65:[2,109],66:[2,109],68:[2,109],70:[2,109],71:[2,109],75:[2,109],77:[2,109],81:[2,109],82:[2,109],83:[2,109],88:[2,109],90:[2,109],99:[2,109],101:[2,109],102:[2,109],103:[2,109],107:[2,109],115:[2,109],123:[2,109],125:[2,109],126:[2,109],127:[2,109],128:[2,109],129:[2,109],130:[2,109],131:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109]},{5:224,25:[1,5],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],47:[2,136],52:[2,136],55:[2,136],70:[2,136],75:[2,136],83:[2,136],88:[2,136],90:[2,136],99:[2,136],100:85,101:[1,63],102:[1,225],103:[1,64],106:86,107:[1,66],108:67,115:[2,136],123:[2,136],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],47:[2,138],52:[2,138],55:[2,138],70:[2,138],75:[2,138],83:[2,138],88:[2,138],90:[2,138],99:[2,138],100:85,101:[1,63],102:[1,226],103:[1,64],106:86,107:[1,66],108:67,115:[2,138],123:[2,138],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],47:[2,144],52:[2,144],55:[2,144],70:[2,144],75:[2,144],83:[2,144],88:[2,144],90:[2,144],99:[2,144],101:[2,144],102:[2,144],103:[2,144],107:[2,144],115:[2,144],123:[2,144],125:[2,144],126:[2,144],129:[2,144],130:[2,144],131:[2,144],132:[2,144],133:[2,144],134:[2,144]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],47:[2,145],52:[2,145],55:[2,145],70:[2,145],75:[2,145],83:[2,145],88:[2,145],90:[2,145],99:[2,145],100:85,101:[1,63],102:[2,145],103:[1,64],106:86,107:[1,66],108:67,115:[2,145],123:[2,145],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],47:[2,149],52:[2,149],55:[2,149],70:[2,149],75:[2,149],83:[2,149],88:[2,149],90:[2,149],99:[2,149],101:[2,149],102:[2,149],103:[2,149],107:[2,149],115:[2,149],123:[2,149],125:[2,149],126:[2,149],129:[2,149],130:[2,149],131:[2,149],132:[2,149],133:[2,149],134:[2,149]},{113:[2,151],114:[2,151]},{27:156,28:[1,71],56:157,57:158,73:[1,68],87:[1,112],110:227,112:155},{52:[1,228],113:[2,156],114:[2,156]},{52:[2,153],113:[2,153],114:[2,153]},{52:[2,154],113:[2,154],114:[2,154]},{52:[2,155],113:[2,155],114:[2,155]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],47:[2,150],52:[2,150],55:[2,150],70:[2,150],75:[2,150],83:[2,150],88:[2,150],90:[2,150],99:[2,150],101:[2,150],102:[2,150],103:[2,150],107:[2,150],115:[2,150],123:[2,150],125:[2,150],126:[2,150],129:[2,150],130:[2,150],131:[2,150],132:[2,150],133:[2,150],134:[2,150]},{8:229,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:230,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,51],25:[2,51],51:231,52:[1,232],75:[2,51]},{6:[2,87],25:[2,87],26:[2,87],52:[2,87],75:[2,87]},{6:[2,37],25:[2,37],26:[2,37],41:[1,233],52:[2,37],75:[2,37]},{6:[2,40],25:[2,40],26:[2,40],52:[2,40],75:[2,40]},{6:[2,41],25:[2,41],26:[2,41],41:[2,41],52:[2,41],75:[2,41]},{6:[2,42],25:[2,42],26:[2,42],41:[2,42],52:[2,42],75:[2,42]},{6:[2,43],25:[2,43],26:[2,43],41:[2,43],52:[2,43],75:[2,43]},{1:[2,5],6:[2,5],26:[2,5],99:[2,5]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],47:[2,25],52:[2,25],55:[2,25],70:[2,25],75:[2,25],83:[2,25],88:[2,25],90:[2,25],95:[2,25],96:[2,25],99:[2,25],101:[2,25],102:[2,25],103:[2,25],107:[2,25],115:[2,25],118:[2,25],120:[2,25],123:[2,25],125:[2,25],126:[2,25],129:[2,25],130:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],47:[2,187],52:[2,187],55:[2,187],70:[2,187],75:[2,187],83:[2,187],88:[2,187],90:[2,187],99:[2,187],100:85,101:[2,187],102:[2,187],103:[2,187],106:86,107:[2,187],108:67,115:[2,187],123:[2,187],125:[2,187],126:[2,187],129:[1,76],130:[1,79],131:[2,187],132:[2,187],133:[2,187],134:[2,187]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],47:[2,188],52:[2,188],55:[2,188],70:[2,188],75:[2,188],83:[2,188],88:[2,188],90:[2,188],99:[2,188],100:85,101:[2,188],102:[2,188],103:[2,188],106:86,107:[2,188],108:67,115:[2,188],123:[2,188],125:[2,188],126:[2,188],129:[1,76],130:[1,79],131:[2,188],132:[2,188],133:[2,188],134:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],47:[2,189],52:[2,189],55:[2,189],70:[2,189],75:[2,189],83:[2,189],88:[2,189],90:[2,189],99:[2,189],100:85,101:[2,189],102:[2,189],103:[2,189],106:86,107:[2,189],108:67,115:[2,189],123:[2,189],125:[2,189],126:[2,189],129:[1,76],130:[2,189],131:[2,189],132:[2,189],133:[2,189],134:[2,189]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],47:[2,190],52:[2,190],55:[2,190],70:[2,190],75:[2,190],83:[2,190],88:[2,190],90:[2,190],99:[2,190],100:85,101:[2,190],102:[2,190],103:[2,190],106:86,107:[2,190],108:67,115:[2,190],123:[2,190],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[2,190],132:[2,190],133:[2,190],134:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],47:[2,191],52:[2,191],55:[2,191],70:[2,191],75:[2,191],83:[2,191],88:[2,191],90:[2,191],99:[2,191],100:85,101:[2,191],102:[2,191],103:[2,191],106:86,107:[2,191],108:67,115:[2,191],123:[2,191],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[2,191],133:[2,191],134:[1,83]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],47:[2,192],52:[2,192],55:[2,192],70:[2,192],75:[2,192],83:[2,192],88:[2,192],90:[2,192],99:[2,192],100:85,101:[2,192],102:[2,192],103:[2,192],106:86,107:[2,192],108:67,115:[2,192],123:[2,192],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[2,192],134:[1,83]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],47:[2,193],52:[2,193],55:[2,193],70:[2,193],75:[2,193],83:[2,193],88:[2,193],90:[2,193],99:[2,193],100:85,101:[2,193],102:[2,193],103:[2,193],106:86,107:[2,193],108:67,115:[2,193],123:[2,193],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[2,193],133:[2,193],134:[2,193]},{1:[2,178],6:[2,178],25:[2,178],26:[2,178],47:[2,178],52:[2,178],55:[2,178],70:[2,178],75:[2,178],83:[2,178],88:[2,178],90:[2,178],99:[2,178],100:85,101:[1,63],102:[2,178],103:[1,64],106:86,107:[1,66],108:67,115:[2,178],123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,177],6:[2,177],25:[2,177],26:[2,177],47:[2,177],52:[2,177],55:[2,177],70:[2,177],75:[2,177],83:[2,177],88:[2,177],90:[2,177],99:[2,177],100:85,101:[1,63],102:[2,177],103:[1,64],106:86,107:[1,66],108:67,115:[2,177],123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,99],6:[2,99],25:[2,99],26:[2,99],47:[2,99],52:[2,99],55:[2,99],64:[2,99],65:[2,99],66:[2,99],68:[2,99],70:[2,99],71:[2,99],75:[2,99],81:[2,99],82:[2,99],83:[2,99],88:[2,99],90:[2,99],99:[2,99],101:[2,99],102:[2,99],103:[2,99],107:[2,99],115:[2,99],123:[2,99],125:[2,99],126:[2,99],129:[2,99],130:[2,99],131:[2,99],132:[2,99],133:[2,99],134:[2,99]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],38:[2,76],47:[2,76],52:[2,76],55:[2,76],64:[2,76],65:[2,76],66:[2,76],68:[2,76],70:[2,76],71:[2,76],75:[2,76],77:[2,76],81:[2,76],82:[2,76],83:[2,76],88:[2,76],90:[2,76],99:[2,76],101:[2,76],102:[2,76],103:[2,76],107:[2,76],115:[2,76],123:[2,76],125:[2,76],126:[2,76],127:[2,76],128:[2,76],129:[2,76],130:[2,76],131:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],38:[2,77],47:[2,77],52:[2,77],55:[2,77],64:[2,77],65:[2,77],66:[2,77],68:[2,77],70:[2,77],71:[2,77],75:[2,77],77:[2,77],81:[2,77],82:[2,77],83:[2,77],88:[2,77],90:[2,77],99:[2,77],101:[2,77],102:[2,77],103:[2,77],107:[2,77],115:[2,77],123:[2,77],125:[2,77],126:[2,77],127:[2,77],128:[2,77],129:[2,77],130:[2,77],131:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],38:[2,78],47:[2,78],52:[2,78],55:[2,78],64:[2,78],65:[2,78],66:[2,78],68:[2,78],70:[2,78],71:[2,78],75:[2,78],77:[2,78],81:[2,78],82:[2,78],83:[2,78],88:[2,78],90:[2,78],99:[2,78],101:[2,78],102:[2,78],103:[2,78],107:[2,78],115:[2,78],123:[2,78],125:[2,78],126:[2,78],127:[2,78],128:[2,78],129:[2,78],130:[2,78],131:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78]},{70:[1,234]},{55:[1,189],70:[2,83],89:235,90:[1,188],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{70:[2,84]},{8:236,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,70:[2,118],73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{12:[2,112],28:[2,112],30:[2,112],31:[2,112],33:[2,112],34:[2,112],35:[2,112],36:[2,112],43:[2,112],44:[2,112],45:[2,112],49:[2,112],50:[2,112],70:[2,112],73:[2,112],76:[2,112],80:[2,112],85:[2,112],86:[2,112],87:[2,112],93:[2,112],97:[2,112],98:[2,112],101:[2,112],103:[2,112],105:[2,112],107:[2,112],116:[2,112],122:[2,112],124:[2,112],125:[2,112],126:[2,112],127:[2,112],128:[2,112]},{12:[2,113],28:[2,113],30:[2,113],31:[2,113],33:[2,113],34:[2,113],35:[2,113],36:[2,113],43:[2,113],44:[2,113],45:[2,113],49:[2,113],50:[2,113],70:[2,113],73:[2,113],76:[2,113],80:[2,113],85:[2,113],86:[2,113],87:[2,113],93:[2,113],97:[2,113],98:[2,113],101:[2,113],103:[2,113],105:[2,113],107:[2,113],116:[2,113],122:[2,113],124:[2,113],125:[2,113],126:[2,113],127:[2,113],128:[2,113]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],38:[2,82],47:[2,82],52:[2,82],55:[2,82],64:[2,82],65:[2,82],66:[2,82],68:[2,82],70:[2,82],71:[2,82],75:[2,82],77:[2,82],81:[2,82],82:[2,82],83:[2,82],88:[2,82],90:[2,82],99:[2,82],101:[2,82],102:[2,82],103:[2,82],107:[2,82],115:[2,82],123:[2,82],125:[2,82],126:[2,82],127:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],47:[2,100],52:[2,100],55:[2,100],64:[2,100],65:[2,100],66:[2,100],68:[2,100],70:[2,100],71:[2,100],75:[2,100],81:[2,100],82:[2,100],83:[2,100],88:[2,100],90:[2,100],99:[2,100],101:[2,100],102:[2,100],103:[2,100],107:[2,100],115:[2,100],123:[2,100],125:[2,100],126:[2,100],129:[2,100],130:[2,100],131:[2,100],132:[2,100],133:[2,100],134:[2,100]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],47:[2,34],52:[2,34],55:[2,34],70:[2,34],75:[2,34],83:[2,34],88:[2,34],90:[2,34],99:[2,34],100:85,101:[2,34],102:[2,34],103:[2,34],106:86,107:[2,34],108:67,115:[2,34],123:[2,34],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:237,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:238,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],47:[2,105],52:[2,105],55:[2,105],64:[2,105],65:[2,105],66:[2,105],68:[2,105],70:[2,105],71:[2,105],75:[2,105],81:[2,105],82:[2,105],83:[2,105],88:[2,105],90:[2,105],99:[2,105],101:[2,105],102:[2,105],103:[2,105],107:[2,105],115:[2,105],123:[2,105],125:[2,105],126:[2,105],129:[2,105],130:[2,105],131:[2,105],132:[2,105],133:[2,105],134:[2,105]},{6:[2,51],25:[2,51],51:239,52:[1,222],83:[2,51]},{6:[2,124],25:[2,124],26:[2,124],52:[2,124],55:[1,240],83:[2,124],88:[2,124],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{48:241,49:[1,58],50:[1,59]},{27:107,28:[1,71],42:108,53:242,54:106,56:109,57:110,73:[1,68],86:[1,111],87:[1,112]},{47:[2,57],52:[2,57]},{8:243,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],47:[2,194],52:[2,194],55:[2,194],70:[2,194],75:[2,194],83:[2,194],88:[2,194],90:[2,194],99:[2,194],100:85,101:[2,194],102:[2,194],103:[2,194],106:86,107:[2,194],108:67,115:[2,194],123:[2,194],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:244,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],47:[2,196],52:[2,196],55:[2,196],70:[2,196],75:[2,196],83:[2,196],88:[2,196],90:[2,196],99:[2,196],100:85,101:[2,196],102:[2,196],103:[2,196],106:86,107:[2,196],108:67,115:[2,196],123:[2,196],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,176],6:[2,176],25:[2,176],26:[2,176],47:[2,176],52:[2,176],55:[2,176],70:[2,176],75:[2,176],83:[2,176],88:[2,176],90:[2,176],99:[2,176],101:[2,176],102:[2,176],103:[2,176],107:[2,176],115:[2,176],123:[2,176],125:[2,176],126:[2,176],129:[2,176],130:[2,176],131:[2,176],132:[2,176],133:[2,176],134:[2,176]},{8:245,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,129],6:[2,129],25:[2,129],26:[2,129],47:[2,129],52:[2,129],55:[2,129],70:[2,129],75:[2,129],83:[2,129],88:[2,129],90:[2,129],95:[1,246],99:[2,129],101:[2,129],102:[2,129],103:[2,129],107:[2,129],115:[2,129],123:[2,129],125:[2,129],126:[2,129],129:[2,129],130:[2,129],131:[2,129],132:[2,129],133:[2,129],134:[2,129]},{5:247,25:[1,5]},{27:248,28:[1,71]},{117:249,119:212,120:[1,213]},{26:[1,250],118:[1,251],119:252,120:[1,213]},{26:[2,169],118:[2,169],120:[2,169]},{8:254,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],92:253,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,93],5:255,6:[2,93],25:[1,5],26:[2,93],47:[2,93],52:[2,93],55:[2,93],70:[2,93],75:[2,93],83:[2,93],88:[2,93],90:[2,93],99:[2,93],100:85,101:[1,63],102:[2,93],103:[1,64],106:86,107:[1,66],108:67,115:[2,93],123:[2,93],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],47:[2,96],52:[2,96],55:[2,96],70:[2,96],75:[2,96],83:[2,96],88:[2,96],90:[2,96],99:[2,96],101:[2,96],102:[2,96],103:[2,96],107:[2,96],115:[2,96],123:[2,96],125:[2,96],126:[2,96],129:[2,96],130:[2,96],131:[2,96],132:[2,96],133:[2,96],134:[2,96]},{8:256,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],47:[2,134],52:[2,134],55:[2,134],64:[2,134],65:[2,134],66:[2,134],68:[2,134],70:[2,134],71:[2,134],75:[2,134],81:[2,134],82:[2,134],83:[2,134],88:[2,134],90:[2,134],99:[2,134],101:[2,134],102:[2,134],103:[2,134],107:[2,134],115:[2,134],123:[2,134],125:[2,134],126:[2,134],129:[2,134],130:[2,134],131:[2,134],132:[2,134],133:[2,134],134:[2,134]},{6:[1,72],26:[1,257]},{8:258,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,63],12:[2,113],25:[2,63],28:[2,113],30:[2,113],31:[2,113],33:[2,113],34:[2,113],35:[2,113],36:[2,113],43:[2,113],44:[2,113],45:[2,113],49:[2,113],50:[2,113],52:[2,63],73:[2,113],76:[2,113],80:[2,113],85:[2,113],86:[2,113],87:[2,113],88:[2,63],93:[2,113],97:[2,113],98:[2,113],101:[2,113],103:[2,113],105:[2,113],107:[2,113],116:[2,113],122:[2,113],124:[2,113],125:[2,113],126:[2,113],127:[2,113],128:[2,113]},{6:[1,260],25:[1,261],88:[1,259]},{6:[2,52],8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[2,52],26:[2,52],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],83:[2,52],85:[1,56],86:[1,57],87:[1,55],88:[2,52],91:262,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,51],25:[2,51],26:[2,51],51:263,52:[1,222]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],47:[2,173],52:[2,173],55:[2,173],70:[2,173],75:[2,173],83:[2,173],88:[2,173],90:[2,173],99:[2,173],101:[2,173],102:[2,173],103:[2,173],107:[2,173],115:[2,173],118:[2,173],123:[2,173],125:[2,173],126:[2,173],129:[2,173],130:[2,173],131:[2,173],132:[2,173],133:[2,173],134:[2,173]},{8:264,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:265,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{113:[2,152],114:[2,152]},{27:156,28:[1,71],56:157,57:158,73:[1,68],87:[1,112],112:266},{1:[2,158],6:[2,158],25:[2,158],26:[2,158],47:[2,158],52:[2,158],55:[2,158],70:[2,158],75:[2,158],83:[2,158],88:[2,158],90:[2,158],99:[2,158],100:85,101:[2,158],102:[1,267],103:[2,158],106:86,107:[2,158],108:67,115:[1,268],123:[2,158],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,159],6:[2,159],25:[2,159],26:[2,159],47:[2,159],52:[2,159],55:[2,159],70:[2,159],75:[2,159],83:[2,159],88:[2,159],90:[2,159],99:[2,159],100:85,101:[2,159],102:[1,269],103:[2,159],106:86,107:[2,159],108:67,115:[2,159],123:[2,159],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,271],25:[1,272],75:[1,270]},{6:[2,52],11:165,25:[2,52],26:[2,52],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:273,40:164,42:168,44:[1,46],75:[2,52],86:[1,111]},{8:274,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,275],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],38:[2,81],47:[2,81],52:[2,81],55:[2,81],64:[2,81],65:[2,81],66:[2,81],68:[2,81],70:[2,81],71:[2,81],75:[2,81],77:[2,81],81:[2,81],82:[2,81],83:[2,81],88:[2,81],90:[2,81],99:[2,81],101:[2,81],102:[2,81],103:[2,81],107:[2,81],115:[2,81],123:[2,81],125:[2,81],126:[2,81],127:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81]},{8:276,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,70:[2,116],73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{70:[2,117],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],47:[2,35],52:[2,35],55:[2,35],70:[2,35],75:[2,35],83:[2,35],88:[2,35],90:[2,35],99:[2,35],100:85,101:[2,35],102:[2,35],103:[2,35],106:86,107:[2,35],108:67,115:[2,35],123:[2,35],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,277],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,260],25:[1,261],83:[1,278]},{6:[2,63],25:[2,63],26:[2,63],52:[2,63],83:[2,63],88:[2,63]},{5:279,25:[1,5]},{47:[2,55],52:[2,55]},{47:[2,58],52:[2,58],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,280],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{5:281,25:[1,5],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{5:282,25:[1,5]},{1:[2,130],6:[2,130],25:[2,130],26:[2,130],47:[2,130],52:[2,130],55:[2,130],70:[2,130],75:[2,130],83:[2,130],88:[2,130],90:[2,130],99:[2,130],101:[2,130],102:[2,130],103:[2,130],107:[2,130],115:[2,130],123:[2,130],125:[2,130],126:[2,130],129:[2,130],130:[2,130],131:[2,130],132:[2,130],133:[2,130],134:[2,130]},{5:283,25:[1,5]},{26:[1,284],118:[1,285],119:252,120:[1,213]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],47:[2,167],52:[2,167],55:[2,167],70:[2,167],75:[2,167],83:[2,167],88:[2,167],90:[2,167],99:[2,167],101:[2,167],102:[2,167],103:[2,167],107:[2,167],115:[2,167],123:[2,167],125:[2,167],126:[2,167],129:[2,167],130:[2,167],131:[2,167],132:[2,167],133:[2,167],134:[2,167]},{5:286,25:[1,5]},{26:[2,170],118:[2,170],120:[2,170]},{5:287,25:[1,5],52:[1,288]},{25:[2,126],52:[2,126],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,94],6:[2,94],25:[2,94],26:[2,94],47:[2,94],52:[2,94],55:[2,94],70:[2,94],75:[2,94],83:[2,94],88:[2,94],90:[2,94],99:[2,94],101:[2,94],102:[2,94],103:[2,94],107:[2,94],115:[2,94],123:[2,94],125:[2,94],126:[2,94],129:[2,94],130:[2,94],131:[2,94],132:[2,94],133:[2,94],134:[2,94]},{1:[2,97],5:289,6:[2,97],25:[1,5],26:[2,97],47:[2,97],52:[2,97],55:[2,97],70:[2,97],75:[2,97],83:[2,97],88:[2,97],90:[2,97],99:[2,97],100:85,101:[1,63],102:[2,97],103:[1,64],106:86,107:[1,66],108:67,115:[2,97],123:[2,97],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{99:[1,290]},{88:[1,291],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],38:[2,111],47:[2,111],52:[2,111],55:[2,111],64:[2,111],65:[2,111],66:[2,111],68:[2,111],70:[2,111],71:[2,111],75:[2,111],81:[2,111],82:[2,111],83:[2,111],88:[2,111],90:[2,111],99:[2,111],101:[2,111],102:[2,111],103:[2,111],107:[2,111],113:[2,111],114:[2,111],115:[2,111],123:[2,111],125:[2,111],126:[2,111],129:[2,111],130:[2,111],131:[2,111],132:[2,111],133:[2,111],134:[2,111]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],91:292,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:293,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,120],25:[2,120],26:[2,120],52:[2,120],83:[2,120],88:[2,120]},{6:[1,260],25:[1,261],26:[1,294]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],47:[2,137],52:[2,137],55:[2,137],70:[2,137],75:[2,137],83:[2,137],88:[2,137],90:[2,137],99:[2,137],100:85,101:[1,63],102:[2,137],103:[1,64],106:86,107:[1,66],108:67,115:[2,137],123:[2,137],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],47:[2,139],52:[2,139],55:[2,139],70:[2,139],75:[2,139],83:[2,139],88:[2,139],90:[2,139],99:[2,139],100:85,101:[1,63],102:[2,139],103:[1,64],106:86,107:[1,66],108:67,115:[2,139],123:[2,139],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{113:[2,157],114:[2,157]},{8:295,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:296,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:297,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],38:[2,85],47:[2,85],52:[2,85],55:[2,85],64:[2,85],65:[2,85],66:[2,85],68:[2,85],70:[2,85],71:[2,85],75:[2,85],81:[2,85],82:[2,85],83:[2,85],88:[2,85],90:[2,85],99:[2,85],101:[2,85],102:[2,85],103:[2,85],107:[2,85],113:[2,85],114:[2,85],115:[2,85],123:[2,85],125:[2,85],126:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85]},{11:165,27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:298,40:164,42:168,44:[1,46],86:[1,111]},{6:[2,86],11:165,25:[2,86],26:[2,86],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:163,40:164,42:168,44:[1,46],52:[2,86],74:299,86:[1,111]},{6:[2,88],25:[2,88],26:[2,88],52:[2,88],75:[2,88]},{6:[2,38],25:[2,38],26:[2,38],52:[2,38],75:[2,38],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:300,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{70:[2,115],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],47:[2,36],52:[2,36],55:[2,36],70:[2,36],75:[2,36],83:[2,36],88:[2,36],90:[2,36],99:[2,36],101:[2,36],102:[2,36],103:[2,36],107:[2,36],115:[2,36],123:[2,36],125:[2,36],126:[2,36],129:[2,36],130:[2,36],131:[2,36],132:[2,36],133:[2,36],134:[2,36]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],47:[2,106],52:[2,106],55:[2,106],64:[2,106],65:[2,106],66:[2,106],68:[2,106],70:[2,106],71:[2,106],75:[2,106],81:[2,106],82:[2,106],83:[2,106],88:[2,106],90:[2,106],99:[2,106],101:[2,106],102:[2,106],103:[2,106],107:[2,106],115:[2,106],123:[2,106],125:[2,106],126:[2,106],129:[2,106],130:[2,106],131:[2,106],132:[2,106],133:[2,106],134:[2,106]},{1:[2,47],6:[2,47],25:[2,47],26:[2,47],47:[2,47],52:[2,47],55:[2,47],70:[2,47],75:[2,47],83:[2,47],88:[2,47],90:[2,47],99:[2,47],101:[2,47],102:[2,47],103:[2,47],107:[2,47],115:[2,47],123:[2,47],125:[2,47],126:[2,47],129:[2,47],130:[2,47],131:[2,47],132:[2,47],133:[2,47],134:[2,47]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],47:[2,195],52:[2,195],55:[2,195],70:[2,195],75:[2,195],83:[2,195],88:[2,195],90:[2,195],99:[2,195],101:[2,195],102:[2,195],103:[2,195],107:[2,195],115:[2,195],123:[2,195],125:[2,195],126:[2,195],129:[2,195],130:[2,195],131:[2,195],132:[2,195],133:[2,195],134:[2,195]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],47:[2,174],52:[2,174],55:[2,174],70:[2,174],75:[2,174],83:[2,174],88:[2,174],90:[2,174],99:[2,174],101:[2,174],102:[2,174],103:[2,174],107:[2,174],115:[2,174],118:[2,174],123:[2,174],125:[2,174],126:[2,174],129:[2,174],130:[2,174],131:[2,174],132:[2,174],133:[2,174],134:[2,174]},{1:[2,131],6:[2,131],25:[2,131],26:[2,131],47:[2,131],52:[2,131],55:[2,131],70:[2,131],75:[2,131],83:[2,131],88:[2,131],90:[2,131],99:[2,131],101:[2,131],102:[2,131],103:[2,131],107:[2,131],115:[2,131],123:[2,131],125:[2,131],126:[2,131],129:[2,131],130:[2,131],131:[2,131],132:[2,131],133:[2,131],134:[2,131]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],47:[2,132],52:[2,132],55:[2,132],70:[2,132],75:[2,132],83:[2,132],88:[2,132],90:[2,132],95:[2,132],99:[2,132],101:[2,132],102:[2,132],103:[2,132],107:[2,132],115:[2,132],123:[2,132],125:[2,132],126:[2,132],129:[2,132],130:[2,132],131:[2,132],132:[2,132],133:[2,132],134:[2,132]},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],47:[2,165],52:[2,165],55:[2,165],70:[2,165],75:[2,165],83:[2,165],88:[2,165],90:[2,165],99:[2,165],101:[2,165],102:[2,165],103:[2,165],107:[2,165],115:[2,165],123:[2,165],125:[2,165],126:[2,165],129:[2,165],130:[2,165],131:[2,165],132:[2,165],133:[2,165],134:[2,165]},{5:301,25:[1,5]},{26:[1,302]},{6:[1,303],26:[2,171],118:[2,171],120:[2,171]},{8:304,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],47:[2,98],52:[2,98],55:[2,98],70:[2,98],75:[2,98],83:[2,98],88:[2,98],90:[2,98],99:[2,98],101:[2,98],102:[2,98],103:[2,98],107:[2,98],115:[2,98],123:[2,98],125:[2,98],126:[2,98],129:[2,98],130:[2,98],131:[2,98],132:[2,98],133:[2,98],134:[2,98]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],47:[2,135],52:[2,135],55:[2,135],64:[2,135],65:[2,135],66:[2,135],68:[2,135],70:[2,135],71:[2,135],75:[2,135],81:[2,135],82:[2,135],83:[2,135],88:[2,135],90:[2,135],99:[2,135],101:[2,135],102:[2,135],103:[2,135],107:[2,135],115:[2,135],123:[2,135],125:[2,135],126:[2,135],129:[2,135],130:[2,135],131:[2,135],132:[2,135],133:[2,135],134:[2,135]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],47:[2,114],52:[2,114],55:[2,114],64:[2,114],65:[2,114],66:[2,114],68:[2,114],70:[2,114],71:[2,114],75:[2,114],81:[2,114],82:[2,114],83:[2,114],88:[2,114],90:[2,114],99:[2,114],101:[2,114],102:[2,114],103:[2,114],107:[2,114],115:[2,114],123:[2,114],125:[2,114],126:[2,114],129:[2,114],130:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114]},{6:[2,121],25:[2,121],26:[2,121],52:[2,121],83:[2,121],88:[2,121]},{6:[2,51],25:[2,51],26:[2,51],51:305,52:[1,222]},{6:[2,122],25:[2,122],26:[2,122],52:[2,122],83:[2,122],88:[2,122]},{1:[2,160],6:[2,160],25:[2,160],26:[2,160],47:[2,160],52:[2,160],55:[2,160],70:[2,160],75:[2,160],83:[2,160],88:[2,160],90:[2,160],99:[2,160],100:85,101:[2,160],102:[2,160],103:[2,160],106:86,107:[2,160],108:67,115:[1,306],123:[2,160],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,162],6:[2,162],25:[2,162],26:[2,162],47:[2,162],52:[2,162],55:[2,162],70:[2,162],75:[2,162],83:[2,162],88:[2,162],90:[2,162],99:[2,162],100:85,101:[2,162],102:[1,307],103:[2,162],106:86,107:[2,162],108:67,115:[2,162],123:[2,162],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,161],6:[2,161],25:[2,161],26:[2,161],47:[2,161],52:[2,161],55:[2,161],70:[2,161],75:[2,161],83:[2,161],88:[2,161],90:[2,161],99:[2,161],100:85,101:[2,161],102:[2,161],103:[2,161],106:86,107:[2,161],108:67,115:[2,161],123:[2,161],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[2,89],25:[2,89],26:[2,89],52:[2,89],75:[2,89]},{6:[2,51],25:[2,51],26:[2,51],51:308,52:[1,232]},{26:[1,309],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,310]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],47:[2,168],52:[2,168],55:[2,168],70:[2,168],75:[2,168],83:[2,168],88:[2,168],90:[2,168],99:[2,168],101:[2,168],102:[2,168],103:[2,168],107:[2,168],115:[2,168],123:[2,168],125:[2,168],126:[2,168],129:[2,168],130:[2,168],131:[2,168],132:[2,168],133:[2,168],134:[2,168]},{26:[2,172],118:[2,172],120:[2,172]},{25:[2,127],52:[2,127],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,260],25:[1,261],26:[1,311]},{8:312,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:313,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[1,271],25:[1,272],26:[1,314]},{6:[2,39],25:[2,39],26:[2,39],52:[2,39],75:[2,39]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],47:[2,166],52:[2,166],55:[2,166],70:[2,166],75:[2,166],83:[2,166],88:[2,166],90:[2,166],99:[2,166],101:[2,166],102:[2,166],103:[2,166],107:[2,166],115:[2,166],123:[2,166],125:[2,166],126:[2,166],129:[2,166],130:[2,166],131:[2,166],132:[2,166],133:[2,166],134:[2,166]},{6:[2,123],25:[2,123],26:[2,123],52:[2,123],83:[2,123],88:[2,123]},{1:[2,163],6:[2,163],25:[2,163],26:[2,163],47:[2,163],52:[2,163],55:[2,163],70:[2,163],75:[2,163],83:[2,163],88:[2,163],90:[2,163],99:[2,163],100:85,101:[2,163],102:[2,163],103:[2,163],106:86,107:[2,163],108:67,115:[2,163],123:[2,163],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,164],6:[2,164],25:[2,164],26:[2,164],47:[2,164],52:[2,164],55:[2,164],70:[2,164],75:[2,164],83:[2,164],88:[2,164],90:[2,164],99:[2,164],100:85,101:[2,164],102:[2,164],103:[2,164],106:86,107:[2,164],108:67,115:[2,164],123:[2,164],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[2,90],25:[2,90],26:[2,90],52:[2,90],75:[2,90]}],
-defaultActions: {58:[2,49],59:[2,50],73:[2,3],92:[2,104],186:[2,84]},
+table: [{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[3]},{1:[2,2],6:[1,74]},{6:[1,75]},{1:[2,4],6:[2,4],26:[2,4],101:[2,4]},{4:77,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[1,76],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,7],6:[2,7],26:[2,7],101:[2,7],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,8],6:[2,8],26:[2,8],101:[2,8],102:90,103:[1,65],105:[1,66],108:91,109:[1,68],110:69,125:[1,89]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],49:[2,12],54:[2,12],57:[2,12],62:93,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],72:[2,12],73:[1,100],77:[2,12],80:92,83:[1,94],84:[2,107],85:[2,12],90:[2,12],92:[2,12],101:[2,12],103:[2,12],104:[2,12],105:[2,12],109:[2,12],117:[2,12],125:[2,12],127:[2,12],128:[2,12],131:[2,12],132:[2,12],133:[2,12],134:[2,12],135:[2,12],136:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],49:[2,13],54:[2,13],57:[2,13],62:102,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],72:[2,13],73:[1,100],77:[2,13],80:101,83:[1,94],84:[2,107],85:[2,13],90:[2,13],92:[2,13],101:[2,13],103:[2,13],104:[2,13],105:[2,13],109:[2,13],117:[2,13],125:[2,13],127:[2,13],128:[2,13],131:[2,13],132:[2,13],133:[2,13],134:[2,13],135:[2,13],136:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],49:[2,14],54:[2,14],57:[2,14],72:[2,14],77:[2,14],85:[2,14],90:[2,14],92:[2,14],101:[2,14],103:[2,14],104:[2,14],105:[2,14],109:[2,14],117:[2,14],125:[2,14],127:[2,14],128:[2,14],131:[2,14],132:[2,14],133:[2,14],134:[2,14],135:[2,14],136:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],49:[2,15],54:[2,15],57:[2,15],72:[2,15],77:[2,15],85:[2,15],90:[2,15],92:[2,15],101:[2,15],103:[2,15],104:[2,15],105:[2,15],109:[2,15],117:[2,15],125:[2,15],127:[2,15],128:[2,15],131:[2,15],132:[2,15],133:[2,15],134:[2,15],135:[2,15],136:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],49:[2,16],54:[2,16],57:[2,16],72:[2,16],77:[2,16],85:[2,16],90:[2,16],92:[2,16],101:[2,16],103:[2,16],104:[2,16],105:[2,16],109:[2,16],117:[2,16],125:[2,16],127:[2,16],128:[2,16],131:[2,16],132:[2,16],133:[2,16],134:[2,16],135:[2,16],136:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],49:[2,17],54:[2,17],57:[2,17],72:[2,17],77:[2,17],85:[2,17],90:[2,17],92:[2,17],101:[2,17],103:[2,17],104:[2,17],105:[2,17],109:[2,17],117:[2,17],125:[2,17],127:[2,17],128:[2,17],131:[2,17],132:[2,17],133:[2,17],134:[2,17],135:[2,17],136:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],49:[2,18],54:[2,18],57:[2,18],72:[2,18],77:[2,18],85:[2,18],90:[2,18],92:[2,18],101:[2,18],103:[2,18],104:[2,18],105:[2,18],109:[2,18],117:[2,18],125:[2,18],127:[2,18],128:[2,18],131:[2,18],132:[2,18],133:[2,18],134:[2,18],135:[2,18],136:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],49:[2,19],54:[2,19],57:[2,19],72:[2,19],77:[2,19],85:[2,19],90:[2,19],92:[2,19],101:[2,19],103:[2,19],104:[2,19],105:[2,19],109:[2,19],117:[2,19],125:[2,19],127:[2,19],128:[2,19],131:[2,19],132:[2,19],133:[2,19],134:[2,19],135:[2,19],136:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],49:[2,20],54:[2,20],57:[2,20],72:[2,20],77:[2,20],85:[2,20],90:[2,20],92:[2,20],101:[2,20],103:[2,20],104:[2,20],105:[2,20],109:[2,20],117:[2,20],125:[2,20],127:[2,20],128:[2,20],131:[2,20],132:[2,20],133:[2,20],134:[2,20],135:[2,20],136:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],49:[2,21],54:[2,21],57:[2,21],72:[2,21],77:[2,21],85:[2,21],90:[2,21],92:[2,21],101:[2,21],103:[2,21],104:[2,21],105:[2,21],109:[2,21],117:[2,21],125:[2,21],127:[2,21],128:[2,21],131:[2,21],132:[2,21],133:[2,21],134:[2,21],135:[2,21],136:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],49:[2,22],54:[2,22],57:[2,22],72:[2,22],77:[2,22],85:[2,22],90:[2,22],92:[2,22],101:[2,22],103:[2,22],104:[2,22],105:[2,22],109:[2,22],117:[2,22],125:[2,22],127:[2,22],128:[2,22],131:[2,22],132:[2,22],133:[2,22],134:[2,22],135:[2,22],136:[2,22]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],49:[2,23],54:[2,23],57:[2,23],72:[2,23],77:[2,23],85:[2,23],90:[2,23],92:[2,23],101:[2,23],103:[2,23],104:[2,23],105:[2,23],109:[2,23],117:[2,23],125:[2,23],127:[2,23],128:[2,23],131:[2,23],132:[2,23],133:[2,23],134:[2,23],135:[2,23],136:[2,23]},{1:[2,9],6:[2,9],26:[2,9],101:[2,9],103:[2,9],105:[2,9],109:[2,9],125:[2,9]},{1:[2,10],6:[2,10],26:[2,10],101:[2,10],103:[2,10],105:[2,10],109:[2,10],125:[2,10]},{1:[2,11],6:[2,11],26:[2,11],101:[2,11],103:[2,11],105:[2,11],109:[2,11],125:[2,11]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],40:[1,103],49:[2,75],54:[2,75],57:[2,75],66:[2,75],67:[2,75],68:[2,75],70:[2,75],72:[2,75],73:[2,75],77:[2,75],83:[2,75],84:[2,75],85:[2,75],90:[2,75],92:[2,75],101:[2,75],103:[2,75],104:[2,75],105:[2,75],109:[2,75],117:[2,75],125:[2,75],127:[2,75],128:[2,75],131:[2,75],132:[2,75],133:[2,75],134:[2,75],135:[2,75],136:[2,75]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],49:[2,76],54:[2,76],57:[2,76],66:[2,76],67:[2,76],68:[2,76],70:[2,76],72:[2,76],73:[2,76],77:[2,76],83:[2,76],84:[2,76],85:[2,76],90:[2,76],92:[2,76],101:[2,76],103:[2,76],104:[2,76],105:[2,76],109:[2,76],117:[2,76],125:[2,76],127:[2,76],128:[2,76],131:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76],136:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],49:[2,77],54:[2,77],57:[2,77],66:[2,77],67:[2,77],68:[2,77],70:[2,77],72:[2,77],73:[2,77],77:[2,77],83:[2,77],84:[2,77],85:[2,77],90:[2,77],92:[2,77],101:[2,77],103:[2,77],104:[2,77],105:[2,77],109:[2,77],117:[2,77],125:[2,77],127:[2,77],128:[2,77],131:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77],136:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],49:[2,78],54:[2,78],57:[2,78],66:[2,78],67:[2,78],68:[2,78],70:[2,78],72:[2,78],73:[2,78],77:[2,78],83:[2,78],84:[2,78],85:[2,78],90:[2,78],92:[2,78],101:[2,78],103:[2,78],104:[2,78],105:[2,78],109:[2,78],117:[2,78],125:[2,78],127:[2,78],128:[2,78],131:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78],136:[2,78]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],49:[2,79],54:[2,79],57:[2,79],66:[2,79],67:[2,79],68:[2,79],70:[2,79],72:[2,79],73:[2,79],77:[2,79],83:[2,79],84:[2,79],85:[2,79],90:[2,79],92:[2,79],101:[2,79],103:[2,79],104:[2,79],105:[2,79],109:[2,79],117:[2,79],125:[2,79],127:[2,79],128:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79],136:[2,79]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],49:[2,105],54:[2,105],57:[2,105],66:[2,105],67:[2,105],68:[2,105],70:[2,105],72:[2,105],73:[2,105],77:[2,105],81:104,83:[2,105],84:[1,105],85:[2,105],90:[2,105],92:[2,105],101:[2,105],103:[2,105],104:[2,105],105:[2,105],109:[2,105],117:[2,105],125:[2,105],127:[2,105],128:[2,105],131:[2,105],132:[2,105],133:[2,105],134:[2,105],135:[2,105],136:[2,105]},{6:[2,55],25:[2,55],27:109,28:[1,73],44:110,48:106,49:[2,55],54:[2,55],55:107,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{5:115,25:[1,5]},{8:116,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:118,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:119,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{13:121,14:122,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,58:47,59:48,61:120,63:25,64:26,65:27,75:[1,70],82:[1,28],87:[1,58],88:[1,59],89:[1,57],100:[1,56]},{13:121,14:122,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,58:47,59:48,61:124,63:25,64:26,65:27,75:[1,70],82:[1,28],87:[1,58],88:[1,59],89:[1,57],100:[1,56]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],40:[2,72],49:[2,72],54:[2,72],57:[2,72],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,72],73:[2,72],77:[2,72],79:[1,128],83:[2,72],84:[2,72],85:[2,72],90:[2,72],92:[2,72],101:[2,72],103:[2,72],104:[2,72],105:[2,72],109:[2,72],117:[2,72],125:[2,72],127:[2,72],128:[2,72],129:[1,125],130:[1,126],131:[2,72],132:[2,72],133:[2,72],134:[2,72],135:[2,72],136:[2,72],137:[1,127]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],49:[2,180],54:[2,180],57:[2,180],72:[2,180],77:[2,180],85:[2,180],90:[2,180],92:[2,180],101:[2,180],103:[2,180],104:[2,180],105:[2,180],109:[2,180],117:[2,180],120:[1,129],125:[2,180],127:[2,180],128:[2,180],131:[2,180],132:[2,180],133:[2,180],134:[2,180],135:[2,180],136:[2,180]},{5:130,25:[1,5]},{5:131,25:[1,5]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],49:[2,147],54:[2,147],57:[2,147],72:[2,147],77:[2,147],85:[2,147],90:[2,147],92:[2,147],101:[2,147],103:[2,147],104:[2,147],105:[2,147],109:[2,147],117:[2,147],125:[2,147],127:[2,147],128:[2,147],131:[2,147],132:[2,147],133:[2,147],134:[2,147],135:[2,147],136:[2,147]},{5:132,25:[1,5]},{8:133,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,134],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,95],5:135,6:[2,95],13:121,14:122,25:[1,5],26:[2,95],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,49:[2,95],54:[2,95],57:[2,95],58:47,59:48,61:137,63:25,64:26,65:27,72:[2,95],75:[1,70],77:[2,95],79:[1,136],82:[1,28],85:[2,95],87:[1,58],88:[1,59],89:[1,57],90:[2,95],92:[2,95],100:[1,56],101:[2,95],103:[2,95],104:[2,95],105:[2,95],109:[2,95],117:[2,95],125:[2,95],127:[2,95],128:[2,95],131:[2,95],132:[2,95],133:[2,95],134:[2,95],135:[2,95],136:[2,95]},{8:138,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,47],6:[2,47],8:139,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,47],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],101:[2,47],102:39,103:[2,47],105:[2,47],106:40,107:[1,67],108:41,109:[2,47],110:69,118:[1,42],123:37,124:[1,64],125:[2,47],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],54:[2,48],77:[2,48],101:[2,48],103:[2,48],105:[2,48],109:[2,48],125:[2,48]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],40:[2,73],49:[2,73],54:[2,73],57:[2,73],66:[2,73],67:[2,73],68:[2,73],70:[2,73],72:[2,73],73:[2,73],77:[2,73],83:[2,73],84:[2,73],85:[2,73],90:[2,73],92:[2,73],101:[2,73],103:[2,73],104:[2,73],105:[2,73],109:[2,73],117:[2,73],125:[2,73],127:[2,73],128:[2,73],131:[2,73],132:[2,73],133:[2,73],134:[2,73],135:[2,73],136:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],40:[2,74],49:[2,74],54:[2,74],57:[2,74],66:[2,74],67:[2,74],68:[2,74],70:[2,74],72:[2,74],73:[2,74],77:[2,74],83:[2,74],84:[2,74],85:[2,74],90:[2,74],92:[2,74],101:[2,74],103:[2,74],104:[2,74],105:[2,74],109:[2,74],117:[2,74],125:[2,74],127:[2,74],128:[2,74],131:[2,74],132:[2,74],133:[2,74],134:[2,74],135:[2,74],136:[2,74]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],49:[2,29],54:[2,29],57:[2,29],66:[2,29],67:[2,29],68:[2,29],70:[2,29],72:[2,29],73:[2,29],77:[2,29],83:[2,29],84:[2,29],85:[2,29],90:[2,29],92:[2,29],101:[2,29],103:[2,29],104:[2,29],105:[2,29],109:[2,29],117:[2,29],125:[2,29],127:[2,29],128:[2,29],131:[2,29],132:[2,29],133:[2,29],134:[2,29],135:[2,29],136:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],49:[2,30],54:[2,30],57:[2,30],66:[2,30],67:[2,30],68:[2,30],70:[2,30],72:[2,30],73:[2,30],77:[2,30],83:[2,30],84:[2,30],85:[2,30],90:[2,30],92:[2,30],101:[2,30],103:[2,30],104:[2,30],105:[2,30],109:[2,30],117:[2,30],125:[2,30],127:[2,30],128:[2,30],131:[2,30],132:[2,30],133:[2,30],134:[2,30],135:[2,30],136:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],49:[2,31],54:[2,31],57:[2,31],66:[2,31],67:[2,31],68:[2,31],70:[2,31],72:[2,31],73:[2,31],77:[2,31],83:[2,31],84:[2,31],85:[2,31],90:[2,31],92:[2,31],101:[2,31],103:[2,31],104:[2,31],105:[2,31],109:[2,31],117:[2,31],125:[2,31],127:[2,31],128:[2,31],131:[2,31],132:[2,31],133:[2,31],134:[2,31],135:[2,31],136:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],49:[2,32],54:[2,32],57:[2,32],66:[2,32],67:[2,32],68:[2,32],70:[2,32],72:[2,32],73:[2,32],77:[2,32],83:[2,32],84:[2,32],85:[2,32],90:[2,32],92:[2,32],101:[2,32],103:[2,32],104:[2,32],105:[2,32],109:[2,32],117:[2,32],125:[2,32],127:[2,32],128:[2,32],131:[2,32],132:[2,32],133:[2,32],134:[2,32],135:[2,32],136:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],49:[2,33],54:[2,33],57:[2,33],66:[2,33],67:[2,33],68:[2,33],70:[2,33],72:[2,33],73:[2,33],77:[2,33],83:[2,33],84:[2,33],85:[2,33],90:[2,33],92:[2,33],101:[2,33],103:[2,33],104:[2,33],105:[2,33],109:[2,33],117:[2,33],125:[2,33],127:[2,33],128:[2,33],131:[2,33],132:[2,33],133:[2,33],134:[2,33],135:[2,33],136:[2,33]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],49:[2,34],54:[2,34],57:[2,34],66:[2,34],67:[2,34],68:[2,34],70:[2,34],72:[2,34],73:[2,34],77:[2,34],83:[2,34],84:[2,34],85:[2,34],90:[2,34],92:[2,34],101:[2,34],103:[2,34],104:[2,34],105:[2,34],109:[2,34],117:[2,34],125:[2,34],127:[2,34],128:[2,34],131:[2,34],132:[2,34],133:[2,34],134:[2,34],135:[2,34],136:[2,34]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],49:[2,35],54:[2,35],57:[2,35],66:[2,35],67:[2,35],68:[2,35],70:[2,35],72:[2,35],73:[2,35],77:[2,35],83:[2,35],84:[2,35],85:[2,35],90:[2,35],92:[2,35],101:[2,35],103:[2,35],104:[2,35],105:[2,35],109:[2,35],117:[2,35],125:[2,35],127:[2,35],128:[2,35],131:[2,35],132:[2,35],133:[2,35],134:[2,35],135:[2,35],136:[2,35]},{4:140,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,141],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:142,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:144,87:[1,58],88:[1,59],89:[1,57],90:[1,143],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],49:[2,111],54:[2,111],57:[2,111],66:[2,111],67:[2,111],68:[2,111],70:[2,111],72:[2,111],73:[2,111],77:[2,111],83:[2,111],84:[2,111],85:[2,111],90:[2,111],92:[2,111],101:[2,111],103:[2,111],104:[2,111],105:[2,111],109:[2,111],117:[2,111],125:[2,111],127:[2,111],128:[2,111],131:[2,111],132:[2,111],133:[2,111],134:[2,111],135:[2,111],136:[2,111]},{1:[2,112],6:[2,112],25:[2,112],26:[2,112],27:148,28:[1,73],49:[2,112],54:[2,112],57:[2,112],66:[2,112],67:[2,112],68:[2,112],70:[2,112],72:[2,112],73:[2,112],77:[2,112],83:[2,112],84:[2,112],85:[2,112],90:[2,112],92:[2,112],101:[2,112],103:[2,112],104:[2,112],105:[2,112],109:[2,112],117:[2,112],125:[2,112],127:[2,112],128:[2,112],131:[2,112],132:[2,112],133:[2,112],134:[2,112],135:[2,112],136:[2,112]},{25:[2,51]},{25:[2,52]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],40:[2,68],49:[2,68],54:[2,68],57:[2,68],66:[2,68],67:[2,68],68:[2,68],70:[2,68],72:[2,68],73:[2,68],77:[2,68],79:[2,68],83:[2,68],84:[2,68],85:[2,68],90:[2,68],92:[2,68],101:[2,68],103:[2,68],104:[2,68],105:[2,68],109:[2,68],117:[2,68],125:[2,68],127:[2,68],128:[2,68],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[2,68],136:[2,68],137:[2,68]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],40:[2,71],49:[2,71],54:[2,71],57:[2,71],66:[2,71],67:[2,71],68:[2,71],70:[2,71],72:[2,71],73:[2,71],77:[2,71],79:[2,71],83:[2,71],84:[2,71],85:[2,71],90:[2,71],92:[2,71],101:[2,71],103:[2,71],104:[2,71],105:[2,71],109:[2,71],117:[2,71],125:[2,71],127:[2,71],128:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71],135:[2,71],136:[2,71],137:[2,71]},{8:149,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:150,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:151,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{5:152,8:153,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{27:158,28:[1,73],44:159,58:160,59:161,64:154,75:[1,70],88:[1,113],89:[1,57],112:155,113:[1,156],114:157},{111:162,115:[1,163],116:[1,164]},{6:[2,90],11:168,25:[2,90],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:166,42:167,44:171,46:[1,46],54:[2,90],76:165,77:[2,90],88:[1,113]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],43:[2,27],49:[2,27],54:[2,27],57:[2,27],66:[2,27],67:[2,27],68:[2,27],70:[2,27],72:[2,27],73:[2,27],77:[2,27],83:[2,27],84:[2,27],85:[2,27],90:[2,27],92:[2,27],101:[2,27],103:[2,27],104:[2,27],105:[2,27],109:[2,27],117:[2,27],125:[2,27],127:[2,27],128:[2,27],131:[2,27],132:[2,27],133:[2,27],134:[2,27],135:[2,27],136:[2,27]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],43:[2,28],49:[2,28],54:[2,28],57:[2,28],66:[2,28],67:[2,28],68:[2,28],70:[2,28],72:[2,28],73:[2,28],77:[2,28],83:[2,28],84:[2,28],85:[2,28],90:[2,28],92:[2,28],101:[2,28],103:[2,28],104:[2,28],105:[2,28],109:[2,28],117:[2,28],125:[2,28],127:[2,28],128:[2,28],131:[2,28],132:[2,28],133:[2,28],134:[2,28],135:[2,28],136:[2,28]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],40:[2,26],43:[2,26],49:[2,26],54:[2,26],57:[2,26],66:[2,26],67:[2,26],68:[2,26],70:[2,26],72:[2,26],73:[2,26],77:[2,26],79:[2,26],83:[2,26],84:[2,26],85:[2,26],90:[2,26],92:[2,26],101:[2,26],103:[2,26],104:[2,26],105:[2,26],109:[2,26],115:[2,26],116:[2,26],117:[2,26],125:[2,26],127:[2,26],128:[2,26],129:[2,26],130:[2,26],131:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26],136:[2,26],137:[2,26]},{1:[2,6],6:[2,6],7:172,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,6],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],101:[2,6],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,3]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],49:[2,24],54:[2,24],57:[2,24],72:[2,24],77:[2,24],85:[2,24],90:[2,24],92:[2,24],97:[2,24],98:[2,24],101:[2,24],103:[2,24],104:[2,24],105:[2,24],109:[2,24],117:[2,24],120:[2,24],122:[2,24],125:[2,24],127:[2,24],128:[2,24],131:[2,24],132:[2,24],133:[2,24],134:[2,24],135:[2,24],136:[2,24]},{6:[1,74],26:[1,173]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],49:[2,191],54:[2,191],57:[2,191],72:[2,191],77:[2,191],85:[2,191],90:[2,191],92:[2,191],101:[2,191],103:[2,191],104:[2,191],105:[2,191],109:[2,191],117:[2,191],125:[2,191],127:[2,191],128:[2,191],131:[2,191],132:[2,191],133:[2,191],134:[2,191],135:[2,191],136:[2,191]},{8:174,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:175,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:176,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:177,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:178,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:179,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:180,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:181,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],49:[2,146],54:[2,146],57:[2,146],72:[2,146],77:[2,146],85:[2,146],90:[2,146],92:[2,146],101:[2,146],103:[2,146],104:[2,146],105:[2,146],109:[2,146],117:[2,146],125:[2,146],127:[2,146],128:[2,146],131:[2,146],132:[2,146],133:[2,146],134:[2,146],135:[2,146],136:[2,146]},{1:[2,151],6:[2,151],25:[2,151],26:[2,151],49:[2,151],54:[2,151],57:[2,151],72:[2,151],77:[2,151],85:[2,151],90:[2,151],92:[2,151],101:[2,151],103:[2,151],104:[2,151],105:[2,151],109:[2,151],117:[2,151],125:[2,151],127:[2,151],128:[2,151],131:[2,151],132:[2,151],133:[2,151],134:[2,151],135:[2,151],136:[2,151]},{8:182,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],49:[2,145],54:[2,145],57:[2,145],72:[2,145],77:[2,145],85:[2,145],90:[2,145],92:[2,145],101:[2,145],103:[2,145],104:[2,145],105:[2,145],109:[2,145],117:[2,145],125:[2,145],127:[2,145],128:[2,145],131:[2,145],132:[2,145],133:[2,145],134:[2,145],135:[2,145],136:[2,145]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],49:[2,150],54:[2,150],57:[2,150],72:[2,150],77:[2,150],85:[2,150],90:[2,150],92:[2,150],101:[2,150],103:[2,150],104:[2,150],105:[2,150],109:[2,150],117:[2,150],125:[2,150],127:[2,150],128:[2,150],131:[2,150],132:[2,150],133:[2,150],134:[2,150],135:[2,150],136:[2,150]},{81:183,84:[1,105]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],40:[2,69],49:[2,69],54:[2,69],57:[2,69],66:[2,69],67:[2,69],68:[2,69],70:[2,69],72:[2,69],73:[2,69],77:[2,69],79:[2,69],83:[2,69],84:[2,69],85:[2,69],90:[2,69],92:[2,69],101:[2,69],103:[2,69],104:[2,69],105:[2,69],109:[2,69],117:[2,69],125:[2,69],127:[2,69],128:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69],135:[2,69],136:[2,69],137:[2,69]},{84:[2,108]},{27:184,28:[1,73]},{27:185,28:[1,73]},{1:[2,83],6:[2,83],25:[2,83],26:[2,83],27:186,28:[1,73],40:[2,83],49:[2,83],54:[2,83],57:[2,83],66:[2,83],67:[2,83],68:[2,83],70:[2,83],72:[2,83],73:[2,83],77:[2,83],79:[2,83],83:[2,83],84:[2,83],85:[2,83],90:[2,83],92:[2,83],101:[2,83],103:[2,83],104:[2,83],105:[2,83],109:[2,83],117:[2,83],125:[2,83],127:[2,83],128:[2,83],129:[2,83],130:[2,83],131:[2,83],132:[2,83],133:[2,83],134:[2,83],135:[2,83],136:[2,83],137:[2,83]},{1:[2,84],6:[2,84],25:[2,84],26:[2,84],40:[2,84],49:[2,84],54:[2,84],57:[2,84],66:[2,84],67:[2,84],68:[2,84],70:[2,84],72:[2,84],73:[2,84],77:[2,84],79:[2,84],83:[2,84],84:[2,84],85:[2,84],90:[2,84],92:[2,84],101:[2,84],103:[2,84],104:[2,84],105:[2,84],109:[2,84],117:[2,84],125:[2,84],127:[2,84],128:[2,84],129:[2,84],130:[2,84],131:[2,84],132:[2,84],133:[2,84],134:[2,84],135:[2,84],136:[2,84],137:[2,84]},{8:188,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],57:[1,192],58:47,59:48,61:36,63:25,64:26,65:27,71:187,74:189,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],91:190,92:[1,191],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{69:193,70:[1,99],73:[1,100]},{81:194,84:[1,105]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],40:[2,70],49:[2,70],54:[2,70],57:[2,70],66:[2,70],67:[2,70],68:[2,70],70:[2,70],72:[2,70],73:[2,70],77:[2,70],79:[2,70],83:[2,70],84:[2,70],85:[2,70],90:[2,70],92:[2,70],101:[2,70],103:[2,70],104:[2,70],105:[2,70],109:[2,70],117:[2,70],125:[2,70],127:[2,70],128:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70],135:[2,70],136:[2,70],137:[2,70]},{6:[1,196],8:195,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,197],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],49:[2,106],54:[2,106],57:[2,106],66:[2,106],67:[2,106],68:[2,106],70:[2,106],72:[2,106],73:[2,106],77:[2,106],83:[2,106],84:[2,106],85:[2,106],90:[2,106],92:[2,106],101:[2,106],103:[2,106],104:[2,106],105:[2,106],109:[2,106],117:[2,106],125:[2,106],127:[2,106],128:[2,106],131:[2,106],132:[2,106],133:[2,106],134:[2,106],135:[2,106],136:[2,106]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],85:[1,198],86:199,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],49:[1,201],53:203,54:[1,202]},{6:[2,56],25:[2,56],26:[2,56],49:[2,56],54:[2,56]},{6:[2,60],25:[2,60],26:[2,60],40:[1,205],49:[2,60],54:[2,60],57:[1,204]},{6:[2,63],25:[2,63],26:[2,63],40:[2,63],49:[2,63],54:[2,63],57:[2,63]},{6:[2,64],25:[2,64],26:[2,64],40:[2,64],49:[2,64],54:[2,64],57:[2,64]},{6:[2,65],25:[2,65],26:[2,65],40:[2,65],49:[2,65],54:[2,65],57:[2,65]},{6:[2,66],25:[2,66],26:[2,66],40:[2,66],49:[2,66],54:[2,66],57:[2,66]},{27:148,28:[1,73]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:144,87:[1,58],88:[1,59],89:[1,57],90:[1,143],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,50],6:[2,50],25:[2,50],26:[2,50],49:[2,50],54:[2,50],57:[2,50],72:[2,50],77:[2,50],85:[2,50],90:[2,50],92:[2,50],101:[2,50],103:[2,50],104:[2,50],105:[2,50],109:[2,50],117:[2,50],125:[2,50],127:[2,50],128:[2,50],131:[2,50],132:[2,50],133:[2,50],134:[2,50],135:[2,50],136:[2,50]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],49:[2,184],54:[2,184],57:[2,184],72:[2,184],77:[2,184],85:[2,184],90:[2,184],92:[2,184],101:[2,184],102:87,103:[2,184],104:[2,184],105:[2,184],108:88,109:[2,184],110:69,117:[2,184],125:[2,184],127:[2,184],128:[2,184],131:[1,78],132:[2,184],133:[2,184],134:[2,184],135:[2,184],136:[2,184]},{102:90,103:[1,65],105:[1,66],108:91,109:[1,68],110:69,125:[1,89]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],49:[2,185],54:[2,185],57:[2,185],72:[2,185],77:[2,185],85:[2,185],90:[2,185],92:[2,185],101:[2,185],102:87,103:[2,185],104:[2,185],105:[2,185],108:88,109:[2,185],110:69,117:[2,185],125:[2,185],127:[2,185],128:[2,185],131:[1,78],132:[2,185],133:[2,185],134:[2,185],135:[2,185],136:[2,185]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],49:[2,186],54:[2,186],57:[2,186],72:[2,186],77:[2,186],85:[2,186],90:[2,186],92:[2,186],101:[2,186],102:87,103:[2,186],104:[2,186],105:[2,186],108:88,109:[2,186],110:69,117:[2,186],125:[2,186],127:[2,186],128:[2,186],131:[1,78],132:[2,186],133:[2,186],134:[2,186],135:[2,186],136:[2,186]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],49:[2,187],54:[2,187],57:[2,187],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,187],73:[2,72],77:[2,187],83:[2,72],84:[2,72],85:[2,187],90:[2,187],92:[2,187],101:[2,187],103:[2,187],104:[2,187],105:[2,187],109:[2,187],117:[2,187],125:[2,187],127:[2,187],128:[2,187],131:[2,187],132:[2,187],133:[2,187],134:[2,187],135:[2,187],136:[2,187]},{62:93,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],73:[1,100],80:92,83:[1,94],84:[2,107]},{62:102,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],73:[1,100],80:101,83:[1,94],84:[2,107]},{66:[2,75],67:[2,75],68:[2,75],70:[2,75],73:[2,75],83:[2,75],84:[2,75]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],49:[2,188],54:[2,188],57:[2,188],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,188],73:[2,72],77:[2,188],83:[2,72],84:[2,72],85:[2,188],90:[2,188],92:[2,188],101:[2,188],103:[2,188],104:[2,188],105:[2,188],109:[2,188],117:[2,188],125:[2,188],127:[2,188],128:[2,188],131:[2,188],132:[2,188],133:[2,188],134:[2,188],135:[2,188],136:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],49:[2,189],54:[2,189],57:[2,189],72:[2,189],77:[2,189],85:[2,189],90:[2,189],92:[2,189],101:[2,189],103:[2,189],104:[2,189],105:[2,189],109:[2,189],117:[2,189],125:[2,189],127:[2,189],128:[2,189],131:[2,189],132:[2,189],133:[2,189],134:[2,189],135:[2,189],136:[2,189]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],49:[2,190],54:[2,190],57:[2,190],72:[2,190],77:[2,190],85:[2,190],90:[2,190],92:[2,190],101:[2,190],103:[2,190],104:[2,190],105:[2,190],109:[2,190],117:[2,190],125:[2,190],127:[2,190],128:[2,190],131:[2,190],132:[2,190],133:[2,190],134:[2,190],135:[2,190],136:[2,190]},{8:206,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,207],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:208,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{5:209,25:[1,5],124:[1,210]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],49:[2,132],54:[2,132],57:[2,132],72:[2,132],77:[2,132],85:[2,132],90:[2,132],92:[2,132],96:211,97:[1,212],98:[1,213],101:[2,132],103:[2,132],104:[2,132],105:[2,132],109:[2,132],117:[2,132],125:[2,132],127:[2,132],128:[2,132],131:[2,132],132:[2,132],133:[2,132],134:[2,132],135:[2,132],136:[2,132]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],49:[2,144],54:[2,144],57:[2,144],72:[2,144],77:[2,144],85:[2,144],90:[2,144],92:[2,144],101:[2,144],103:[2,144],104:[2,144],105:[2,144],109:[2,144],117:[2,144],125:[2,144],127:[2,144],128:[2,144],131:[2,144],132:[2,144],133:[2,144],134:[2,144],135:[2,144],136:[2,144]},{1:[2,152],6:[2,152],25:[2,152],26:[2,152],49:[2,152],54:[2,152],57:[2,152],72:[2,152],77:[2,152],85:[2,152],90:[2,152],92:[2,152],101:[2,152],103:[2,152],104:[2,152],105:[2,152],109:[2,152],117:[2,152],125:[2,152],127:[2,152],128:[2,152],131:[2,152],132:[2,152],133:[2,152],134:[2,152],135:[2,152],136:[2,152]},{25:[1,214],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{119:215,121:216,122:[1,217]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],49:[2,96],54:[2,96],57:[2,96],72:[2,96],77:[2,96],85:[2,96],90:[2,96],92:[2,96],101:[2,96],103:[2,96],104:[2,96],105:[2,96],109:[2,96],117:[2,96],125:[2,96],127:[2,96],128:[2,96],131:[2,96],132:[2,96],133:[2,96],134:[2,96],135:[2,96],136:[2,96]},{8:218,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,99],5:219,6:[2,99],25:[1,5],26:[2,99],49:[2,99],54:[2,99],57:[2,99],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,99],73:[2,72],77:[2,99],79:[1,220],83:[2,72],84:[2,72],85:[2,99],90:[2,99],92:[2,99],101:[2,99],103:[2,99],104:[2,99],105:[2,99],109:[2,99],117:[2,99],125:[2,99],127:[2,99],128:[2,99],131:[2,99],132:[2,99],133:[2,99],134:[2,99],135:[2,99],136:[2,99]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],49:[2,137],54:[2,137],57:[2,137],72:[2,137],77:[2,137],85:[2,137],90:[2,137],92:[2,137],101:[2,137],102:87,103:[2,137],104:[2,137],105:[2,137],108:88,109:[2,137],110:69,117:[2,137],125:[2,137],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,46],6:[2,46],26:[2,46],101:[2,46],102:87,103:[2,46],105:[2,46],108:88,109:[2,46],110:69,125:[2,46],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,74],101:[1,221]},{4:222,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,128],25:[2,128],54:[2,128],57:[1,224],90:[2,128],91:223,92:[1,191],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],40:[2,114],49:[2,114],54:[2,114],57:[2,114],66:[2,114],67:[2,114],68:[2,114],70:[2,114],72:[2,114],73:[2,114],77:[2,114],83:[2,114],84:[2,114],85:[2,114],90:[2,114],92:[2,114],101:[2,114],103:[2,114],104:[2,114],105:[2,114],109:[2,114],115:[2,114],116:[2,114],117:[2,114],125:[2,114],127:[2,114],128:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114],135:[2,114],136:[2,114]},{6:[2,53],25:[2,53],53:225,54:[1,226],90:[2,53]},{6:[2,123],25:[2,123],26:[2,123],54:[2,123],85:[2,123],90:[2,123]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:227,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,129],25:[2,129],26:[2,129],54:[2,129],85:[2,129],90:[2,129]},{1:[2,113],6:[2,113],25:[2,113],26:[2,113],40:[2,113],43:[2,113],49:[2,113],54:[2,113],57:[2,113],66:[2,113],67:[2,113],68:[2,113],70:[2,113],72:[2,113],73:[2,113],77:[2,113],79:[2,113],83:[2,113],84:[2,113],85:[2,113],90:[2,113],92:[2,113],101:[2,113],103:[2,113],104:[2,113],105:[2,113],109:[2,113],115:[2,113],116:[2,113],117:[2,113],125:[2,113],127:[2,113],128:[2,113],129:[2,113],130:[2,113],131:[2,113],132:[2,113],133:[2,113],134:[2,113],135:[2,113],136:[2,113],137:[2,113]},{5:228,25:[1,5],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],49:[2,140],54:[2,140],57:[2,140],72:[2,140],77:[2,140],85:[2,140],90:[2,140],92:[2,140],101:[2,140],102:87,103:[1,65],104:[1,229],105:[1,66],108:88,109:[1,68],110:69,117:[2,140],125:[2,140],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],49:[2,142],54:[2,142],57:[2,142],72:[2,142],77:[2,142],85:[2,142],90:[2,142],92:[2,142],101:[2,142],102:87,103:[1,65],104:[1,230],105:[1,66],108:88,109:[1,68],110:69,117:[2,142],125:[2,142],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],49:[2,148],54:[2,148],57:[2,148],72:[2,148],77:[2,148],85:[2,148],90:[2,148],92:[2,148],101:[2,148],103:[2,148],104:[2,148],105:[2,148],109:[2,148],117:[2,148],125:[2,148],127:[2,148],128:[2,148],131:[2,148],132:[2,148],133:[2,148],134:[2,148],135:[2,148],136:[2,148]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],49:[2,149],54:[2,149],57:[2,149],72:[2,149],77:[2,149],85:[2,149],90:[2,149],92:[2,149],101:[2,149],102:87,103:[1,65],104:[2,149],105:[1,66],108:88,109:[1,68],110:69,117:[2,149],125:[2,149],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,153],6:[2,153],25:[2,153],26:[2,153],49:[2,153],54:[2,153],57:[2,153],72:[2,153],77:[2,153],85:[2,153],90:[2,153],92:[2,153],101:[2,153],103:[2,153],104:[2,153],105:[2,153],109:[2,153],117:[2,153],125:[2,153],127:[2,153],128:[2,153],131:[2,153],132:[2,153],133:[2,153],134:[2,153],135:[2,153],136:[2,153]},{115:[2,155],116:[2,155]},{27:158,28:[1,73],44:159,58:160,59:161,75:[1,70],88:[1,113],89:[1,114],112:231,114:157},{54:[1,232],115:[2,161],116:[2,161]},{54:[2,157],115:[2,157],116:[2,157]},{54:[2,158],115:[2,158],116:[2,158]},{54:[2,159],115:[2,159],116:[2,159]},{54:[2,160],115:[2,160],116:[2,160]},{1:[2,154],6:[2,154],25:[2,154],26:[2,154],49:[2,154],54:[2,154],57:[2,154],72:[2,154],77:[2,154],85:[2,154],90:[2,154],92:[2,154],101:[2,154],103:[2,154],104:[2,154],105:[2,154],109:[2,154],117:[2,154],125:[2,154],127:[2,154],128:[2,154],131:[2,154],132:[2,154],133:[2,154],134:[2,154],135:[2,154],136:[2,154]},{8:233,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:234,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],53:235,54:[1,236],77:[2,53]},{6:[2,91],25:[2,91],26:[2,91],54:[2,91],77:[2,91]},{6:[2,39],25:[2,39],26:[2,39],43:[1,237],54:[2,39],77:[2,39]},{6:[2,42],25:[2,42],26:[2,42],54:[2,42],77:[2,42]},{6:[2,43],25:[2,43],26:[2,43],43:[2,43],54:[2,43],77:[2,43]},{6:[2,44],25:[2,44],26:[2,44],43:[2,44],54:[2,44],77:[2,44]},{6:[2,45],25:[2,45],26:[2,45],43:[2,45],54:[2,45],77:[2,45]},{1:[2,5],6:[2,5],26:[2,5],101:[2,5]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],49:[2,25],54:[2,25],57:[2,25],72:[2,25],77:[2,25],85:[2,25],90:[2,25],92:[2,25],97:[2,25],98:[2,25],101:[2,25],103:[2,25],104:[2,25],105:[2,25],109:[2,25],117:[2,25],120:[2,25],122:[2,25],125:[2,25],127:[2,25],128:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25],135:[2,25],136:[2,25]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],49:[2,192],54:[2,192],57:[2,192],72:[2,192],77:[2,192],85:[2,192],90:[2,192],92:[2,192],101:[2,192],102:87,103:[2,192],104:[2,192],105:[2,192],108:88,109:[2,192],110:69,117:[2,192],125:[2,192],127:[2,192],128:[2,192],131:[1,78],132:[1,81],133:[2,192],134:[2,192],135:[2,192],136:[2,192]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],49:[2,193],54:[2,193],57:[2,193],72:[2,193],77:[2,193],85:[2,193],90:[2,193],92:[2,193],101:[2,193],102:87,103:[2,193],104:[2,193],105:[2,193],108:88,109:[2,193],110:69,117:[2,193],125:[2,193],127:[2,193],128:[2,193],131:[1,78],132:[1,81],133:[2,193],134:[2,193],135:[2,193],136:[2,193]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],49:[2,194],54:[2,194],57:[2,194],72:[2,194],77:[2,194],85:[2,194],90:[2,194],92:[2,194],101:[2,194],102:87,103:[2,194],104:[2,194],105:[2,194],108:88,109:[2,194],110:69,117:[2,194],125:[2,194],127:[2,194],128:[2,194],131:[1,78],132:[2,194],133:[2,194],134:[2,194],135:[2,194],136:[2,194]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],49:[2,195],54:[2,195],57:[2,195],72:[2,195],77:[2,195],85:[2,195],90:[2,195],92:[2,195],101:[2,195],102:87,103:[2,195],104:[2,195],105:[2,195],108:88,109:[2,195],110:69,117:[2,195],125:[2,195],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[2,195],134:[2,195],135:[2,195],136:[2,195]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],49:[2,196],54:[2,196],57:[2,196],72:[2,196],77:[2,196],85:[2,196],90:[2,196],92:[2,196],101:[2,196],102:87,103:[2,196],104:[2,196],105:[2,196],108:88,109:[2,196],110:69,117:[2,196],125:[2,196],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[2,196],135:[2,196],136:[1,85]},{1:[2,197],6:[2,197],25:[2,197],26:[2,197],49:[2,197],54:[2,197],57:[2,197],72:[2,197],77:[2,197],85:[2,197],90:[2,197],92:[2,197],101:[2,197],102:87,103:[2,197],104:[2,197],105:[2,197],108:88,109:[2,197],110:69,117:[2,197],125:[2,197],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[2,197],136:[1,85]},{1:[2,198],6:[2,198],25:[2,198],26:[2,198],49:[2,198],54:[2,198],57:[2,198],72:[2,198],77:[2,198],85:[2,198],90:[2,198],92:[2,198],101:[2,198],102:87,103:[2,198],104:[2,198],105:[2,198],108:88,109:[2,198],110:69,117:[2,198],125:[2,198],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[2,198],135:[2,198],136:[2,198]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],49:[2,183],54:[2,183],57:[2,183],72:[2,183],77:[2,183],85:[2,183],90:[2,183],92:[2,183],101:[2,183],102:87,103:[1,65],104:[2,183],105:[1,66],108:88,109:[1,68],110:69,117:[2,183],125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],49:[2,182],54:[2,182],57:[2,182],72:[2,182],77:[2,182],85:[2,182],90:[2,182],92:[2,182],101:[2,182],102:87,103:[1,65],104:[2,182],105:[1,66],108:88,109:[1,68],110:69,117:[2,182],125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,103],6:[2,103],25:[2,103],26:[2,103],49:[2,103],54:[2,103],57:[2,103],66:[2,103],67:[2,103],68:[2,103],70:[2,103],72:[2,103],73:[2,103],77:[2,103],83:[2,103],84:[2,103],85:[2,103],90:[2,103],92:[2,103],101:[2,103],103:[2,103],104:[2,103],105:[2,103],109:[2,103],117:[2,103],125:[2,103],127:[2,103],128:[2,103],131:[2,103],132:[2,103],133:[2,103],134:[2,103],135:[2,103],136:[2,103]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],40:[2,80],49:[2,80],54:[2,80],57:[2,80],66:[2,80],67:[2,80],68:[2,80],70:[2,80],72:[2,80],73:[2,80],77:[2,80],79:[2,80],83:[2,80],84:[2,80],85:[2,80],90:[2,80],92:[2,80],101:[2,80],103:[2,80],104:[2,80],105:[2,80],109:[2,80],117:[2,80],125:[2,80],127:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80],136:[2,80],137:[2,80]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],40:[2,81],49:[2,81],54:[2,81],57:[2,81],66:[2,81],67:[2,81],68:[2,81],70:[2,81],72:[2,81],73:[2,81],77:[2,81],79:[2,81],83:[2,81],84:[2,81],85:[2,81],90:[2,81],92:[2,81],101:[2,81],103:[2,81],104:[2,81],105:[2,81],109:[2,81],117:[2,81],125:[2,81],127:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81],136:[2,81],137:[2,81]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],40:[2,82],49:[2,82],54:[2,82],57:[2,82],66:[2,82],67:[2,82],68:[2,82],70:[2,82],72:[2,82],73:[2,82],77:[2,82],79:[2,82],83:[2,82],84:[2,82],85:[2,82],90:[2,82],92:[2,82],101:[2,82],103:[2,82],104:[2,82],105:[2,82],109:[2,82],117:[2,82],125:[2,82],127:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82],136:[2,82],137:[2,82]},{72:[1,238]},{57:[1,192],72:[2,87],91:239,92:[1,191],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{72:[2,88]},{8:240,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,72:[2,122],75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{12:[2,116],28:[2,116],30:[2,116],31:[2,116],33:[2,116],34:[2,116],35:[2,116],36:[2,116],37:[2,116],38:[2,116],45:[2,116],46:[2,116],47:[2,116],51:[2,116],52:[2,116],72:[2,116],75:[2,116],78:[2,116],82:[2,116],87:[2,116],88:[2,116],89:[2,116],95:[2,116],99:[2,116],100:[2,116],103:[2,116],105:[2,116],107:[2,116],109:[2,116],118:[2,116],124:[2,116],126:[2,116],127:[2,116],128:[2,116],129:[2,116],130:[2,116]},{12:[2,117],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],72:[2,117],75:[2,117],78:[2,117],82:[2,117],87:[2,117],88:[2,117],89:[2,117],95:[2,117],99:[2,117],100:[2,117],103:[2,117],105:[2,117],107:[2,117],109:[2,117],118:[2,117],124:[2,117],126:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117]},{1:[2,86],6:[2,86],25:[2,86],26:[2,86],40:[2,86],49:[2,86],54:[2,86],57:[2,86],66:[2,86],67:[2,86],68:[2,86],70:[2,86],72:[2,86],73:[2,86],77:[2,86],79:[2,86],83:[2,86],84:[2,86],85:[2,86],90:[2,86],92:[2,86],101:[2,86],103:[2,86],104:[2,86],105:[2,86],109:[2,86],117:[2,86],125:[2,86],127:[2,86],128:[2,86],129:[2,86],130:[2,86],131:[2,86],132:[2,86],133:[2,86],134:[2,86],135:[2,86],136:[2,86],137:[2,86]},{1:[2,104],6:[2,104],25:[2,104],26:[2,104],49:[2,104],54:[2,104],57:[2,104],66:[2,104],67:[2,104],68:[2,104],70:[2,104],72:[2,104],73:[2,104],77:[2,104],83:[2,104],84:[2,104],85:[2,104],90:[2,104],92:[2,104],101:[2,104],103:[2,104],104:[2,104],105:[2,104],109:[2,104],117:[2,104],125:[2,104],127:[2,104],128:[2,104],131:[2,104],132:[2,104],133:[2,104],134:[2,104],135:[2,104],136:[2,104]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],49:[2,36],54:[2,36],57:[2,36],72:[2,36],77:[2,36],85:[2,36],90:[2,36],92:[2,36],101:[2,36],102:87,103:[2,36],104:[2,36],105:[2,36],108:88,109:[2,36],110:69,117:[2,36],125:[2,36],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:241,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:242,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],49:[2,109],54:[2,109],57:[2,109],66:[2,109],67:[2,109],68:[2,109],70:[2,109],72:[2,109],73:[2,109],77:[2,109],83:[2,109],84:[2,109],85:[2,109],90:[2,109],92:[2,109],101:[2,109],103:[2,109],104:[2,109],105:[2,109],109:[2,109],117:[2,109],125:[2,109],127:[2,109],128:[2,109],131:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109],136:[2,109]},{6:[2,53],25:[2,53],53:243,54:[1,226],85:[2,53]},{6:[2,128],25:[2,128],26:[2,128],54:[2,128],57:[1,244],85:[2,128],90:[2,128],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{50:245,51:[1,60],52:[1,61]},{6:[2,54],25:[2,54],26:[2,54],27:109,28:[1,73],44:110,55:246,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[1,247],25:[1,248]},{6:[2,61],25:[2,61],26:[2,61],49:[2,61],54:[2,61]},{8:249,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,199],6:[2,199],25:[2,199],26:[2,199],49:[2,199],54:[2,199],57:[2,199],72:[2,199],77:[2,199],85:[2,199],90:[2,199],92:[2,199],101:[2,199],102:87,103:[2,199],104:[2,199],105:[2,199],108:88,109:[2,199],110:69,117:[2,199],125:[2,199],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:250,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,201],6:[2,201],25:[2,201],26:[2,201],49:[2,201],54:[2,201],57:[2,201],72:[2,201],77:[2,201],85:[2,201],90:[2,201],92:[2,201],101:[2,201],102:87,103:[2,201],104:[2,201],105:[2,201],108:88,109:[2,201],110:69,117:[2,201],125:[2,201],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],49:[2,181],54:[2,181],57:[2,181],72:[2,181],77:[2,181],85:[2,181],90:[2,181],92:[2,181],101:[2,181],103:[2,181],104:[2,181],105:[2,181],109:[2,181],117:[2,181],125:[2,181],127:[2,181],128:[2,181],131:[2,181],132:[2,181],133:[2,181],134:[2,181],135:[2,181],136:[2,181]},{8:251,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],49:[2,133],54:[2,133],57:[2,133],72:[2,133],77:[2,133],85:[2,133],90:[2,133],92:[2,133],97:[1,252],101:[2,133],103:[2,133],104:[2,133],105:[2,133],109:[2,133],117:[2,133],125:[2,133],127:[2,133],128:[2,133],131:[2,133],132:[2,133],133:[2,133],134:[2,133],135:[2,133],136:[2,133]},{5:253,25:[1,5]},{27:254,28:[1,73]},{119:255,121:216,122:[1,217]},{26:[1,256],120:[1,257],121:258,122:[1,217]},{26:[2,174],120:[2,174],122:[2,174]},{8:260,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],94:259,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,97],5:261,6:[2,97],25:[1,5],26:[2,97],49:[2,97],54:[2,97],57:[2,97],72:[2,97],77:[2,97],85:[2,97],90:[2,97],92:[2,97],101:[2,97],102:87,103:[1,65],104:[2,97],105:[1,66],108:88,109:[1,68],110:69,117:[2,97],125:[2,97],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],49:[2,100],54:[2,100],57:[2,100],72:[2,100],77:[2,100],85:[2,100],90:[2,100],92:[2,100],101:[2,100],103:[2,100],104:[2,100],105:[2,100],109:[2,100],117:[2,100],125:[2,100],127:[2,100],128:[2,100],131:[2,100],132:[2,100],133:[2,100],134:[2,100],135:[2,100],136:[2,100]},{8:262,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],49:[2,138],54:[2,138],57:[2,138],66:[2,138],67:[2,138],68:[2,138],70:[2,138],72:[2,138],73:[2,138],77:[2,138],83:[2,138],84:[2,138],85:[2,138],90:[2,138],92:[2,138],101:[2,138],103:[2,138],104:[2,138],105:[2,138],109:[2,138],117:[2,138],125:[2,138],127:[2,138],128:[2,138],131:[2,138],132:[2,138],133:[2,138],134:[2,138],135:[2,138],136:[2,138]},{6:[1,74],26:[1,263]},{8:264,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,67],12:[2,117],25:[2,67],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],54:[2,67],75:[2,117],78:[2,117],82:[2,117],87:[2,117],88:[2,117],89:[2,117],90:[2,67],95:[2,117],99:[2,117],100:[2,117],103:[2,117],105:[2,117],107:[2,117],109:[2,117],118:[2,117],124:[2,117],126:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117]},{6:[1,266],25:[1,267],90:[1,265]},{6:[2,54],8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[2,54],26:[2,54],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],85:[2,54],87:[1,58],88:[1,59],89:[1,57],90:[2,54],93:268,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],26:[2,53],53:269,54:[1,226]},{1:[2,178],6:[2,178],25:[2,178],26:[2,178],49:[2,178],54:[2,178],57:[2,178],72:[2,178],77:[2,178],85:[2,178],90:[2,178],92:[2,178],101:[2,178],103:[2,178],104:[2,178],105:[2,178],109:[2,178],117:[2,178],120:[2,178],125:[2,178],127:[2,178],128:[2,178],131:[2,178],132:[2,178],133:[2,178],134:[2,178],135:[2,178],136:[2,178]},{8:270,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:271,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{115:[2,156],116:[2,156]},{27:158,28:[1,73],44:159,58:160,59:161,75:[1,70],88:[1,113],89:[1,114],114:272},{1:[2,163],6:[2,163],25:[2,163],26:[2,163],49:[2,163],54:[2,163],57:[2,163],72:[2,163],77:[2,163],85:[2,163],90:[2,163],92:[2,163],101:[2,163],102:87,103:[2,163],104:[1,273],105:[2,163],108:88,109:[2,163],110:69,117:[1,274],125:[2,163],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,164],6:[2,164],25:[2,164],26:[2,164],49:[2,164],54:[2,164],57:[2,164],72:[2,164],77:[2,164],85:[2,164],90:[2,164],92:[2,164],101:[2,164],102:87,103:[2,164],104:[1,275],105:[2,164],108:88,109:[2,164],110:69,117:[2,164],125:[2,164],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,277],25:[1,278],77:[1,276]},{6:[2,54],11:168,25:[2,54],26:[2,54],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:279,42:167,44:171,46:[1,46],77:[2,54],88:[1,113]},{8:280,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,281],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],40:[2,85],49:[2,85],54:[2,85],57:[2,85],66:[2,85],67:[2,85],68:[2,85],70:[2,85],72:[2,85],73:[2,85],77:[2,85],79:[2,85],83:[2,85],84:[2,85],85:[2,85],90:[2,85],92:[2,85],101:[2,85],103:[2,85],104:[2,85],105:[2,85],109:[2,85],117:[2,85],125:[2,85],127:[2,85],128:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85],135:[2,85],136:[2,85],137:[2,85]},{8:282,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,72:[2,120],75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{72:[2,121],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,37],6:[2,37],25:[2,37],26:[2,37],49:[2,37],54:[2,37],57:[2,37],72:[2,37],77:[2,37],85:[2,37],90:[2,37],92:[2,37],101:[2,37],102:87,103:[2,37],104:[2,37],105:[2,37],108:88,109:[2,37],110:69,117:[2,37],125:[2,37],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{26:[1,283],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,266],25:[1,267],85:[1,284]},{6:[2,67],25:[2,67],26:[2,67],54:[2,67],85:[2,67],90:[2,67]},{5:285,25:[1,5]},{6:[2,57],25:[2,57],26:[2,57],49:[2,57],54:[2,57]},{27:109,28:[1,73],44:110,55:286,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[2,55],25:[2,55],26:[2,55],27:109,28:[1,73],44:110,48:287,54:[2,55],55:107,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[2,62],25:[2,62],26:[2,62],49:[2,62],54:[2,62],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{26:[1,288],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{5:289,25:[1,5],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{5:290,25:[1,5]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],49:[2,134],54:[2,134],57:[2,134],72:[2,134],77:[2,134],85:[2,134],90:[2,134],92:[2,134],101:[2,134],103:[2,134],104:[2,134],105:[2,134],109:[2,134],117:[2,134],125:[2,134],127:[2,134],128:[2,134],131:[2,134],132:[2,134],133:[2,134],134:[2,134],135:[2,134],136:[2,134]},{5:291,25:[1,5]},{26:[1,292],120:[1,293],121:258,122:[1,217]},{1:[2,172],6:[2,172],25:[2,172],26:[2,172],49:[2,172],54:[2,172],57:[2,172],72:[2,172],77:[2,172],85:[2,172],90:[2,172],92:[2,172],101:[2,172],103:[2,172],104:[2,172],105:[2,172],109:[2,172],117:[2,172],125:[2,172],127:[2,172],128:[2,172],131:[2,172],132:[2,172],133:[2,172],134:[2,172],135:[2,172],136:[2,172]},{5:294,25:[1,5]},{26:[2,175],120:[2,175],122:[2,175]},{5:295,25:[1,5],54:[1,296]},{25:[2,130],54:[2,130],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],49:[2,98],54:[2,98],57:[2,98],72:[2,98],77:[2,98],85:[2,98],90:[2,98],92:[2,98],101:[2,98],103:[2,98],104:[2,98],105:[2,98],109:[2,98],117:[2,98],125:[2,98],127:[2,98],128:[2,98],131:[2,98],132:[2,98],133:[2,98],134:[2,98],135:[2,98],136:[2,98]},{1:[2,101],5:297,6:[2,101],25:[1,5],26:[2,101],49:[2,101],54:[2,101],57:[2,101],72:[2,101],77:[2,101],85:[2,101],90:[2,101],92:[2,101],101:[2,101],102:87,103:[1,65],104:[2,101],105:[1,66],108:88,109:[1,68],110:69,117:[2,101],125:[2,101],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{101:[1,298]},{90:[1,299],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,115],6:[2,115],25:[2,115],26:[2,115],40:[2,115],49:[2,115],54:[2,115],57:[2,115],66:[2,115],67:[2,115],68:[2,115],70:[2,115],72:[2,115],73:[2,115],77:[2,115],83:[2,115],84:[2,115],85:[2,115],90:[2,115],92:[2,115],101:[2,115],103:[2,115],104:[2,115],105:[2,115],109:[2,115],115:[2,115],116:[2,115],117:[2,115],125:[2,115],127:[2,115],128:[2,115],131:[2,115],132:[2,115],133:[2,115],134:[2,115],135:[2,115],136:[2,115]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],93:300,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:301,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,124],25:[2,124],26:[2,124],54:[2,124],85:[2,124],90:[2,124]},{6:[1,266],25:[1,267],26:[1,302]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],49:[2,141],54:[2,141],57:[2,141],72:[2,141],77:[2,141],85:[2,141],90:[2,141],92:[2,141],101:[2,141],102:87,103:[1,65],104:[2,141],105:[1,66],108:88,109:[1,68],110:69,117:[2,141],125:[2,141],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],49:[2,143],54:[2,143],57:[2,143],72:[2,143],77:[2,143],85:[2,143],90:[2,143],92:[2,143],101:[2,143],102:87,103:[1,65],104:[2,143],105:[1,66],108:88,109:[1,68],110:69,117:[2,143],125:[2,143],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{115:[2,162],116:[2,162]},{8:303,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:304,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:305,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,89],6:[2,89],25:[2,89],26:[2,89],40:[2,89],49:[2,89],54:[2,89],57:[2,89],66:[2,89],67:[2,89],68:[2,89],70:[2,89],72:[2,89],73:[2,89],77:[2,89],83:[2,89],84:[2,89],85:[2,89],90:[2,89],92:[2,89],101:[2,89],103:[2,89],104:[2,89],105:[2,89],109:[2,89],115:[2,89],116:[2,89],117:[2,89],125:[2,89],127:[2,89],128:[2,89],131:[2,89],132:[2,89],133:[2,89],134:[2,89],135:[2,89],136:[2,89]},{11:168,27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:306,42:167,44:171,46:[1,46],88:[1,113]},{6:[2,90],11:168,25:[2,90],26:[2,90],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:166,42:167,44:171,46:[1,46],54:[2,90],76:307,88:[1,113]},{6:[2,92],25:[2,92],26:[2,92],54:[2,92],77:[2,92]},{6:[2,40],25:[2,40],26:[2,40],54:[2,40],77:[2,40],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:308,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{72:[2,119],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,38],6:[2,38],25:[2,38],26:[2,38],49:[2,38],54:[2,38],57:[2,38],72:[2,38],77:[2,38],85:[2,38],90:[2,38],92:[2,38],101:[2,38],103:[2,38],104:[2,38],105:[2,38],109:[2,38],117:[2,38],125:[2,38],127:[2,38],128:[2,38],131:[2,38],132:[2,38],133:[2,38],134:[2,38],135:[2,38],136:[2,38]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],49:[2,110],54:[2,110],57:[2,110],66:[2,110],67:[2,110],68:[2,110],70:[2,110],72:[2,110],73:[2,110],77:[2,110],83:[2,110],84:[2,110],85:[2,110],90:[2,110],92:[2,110],101:[2,110],103:[2,110],104:[2,110],105:[2,110],109:[2,110],117:[2,110],125:[2,110],127:[2,110],128:[2,110],131:[2,110],132:[2,110],133:[2,110],134:[2,110],135:[2,110],136:[2,110]},{1:[2,49],6:[2,49],25:[2,49],26:[2,49],49:[2,49],54:[2,49],57:[2,49],72:[2,49],77:[2,49],85:[2,49],90:[2,49],92:[2,49],101:[2,49],103:[2,49],104:[2,49],105:[2,49],109:[2,49],117:[2,49],125:[2,49],127:[2,49],128:[2,49],131:[2,49],132:[2,49],133:[2,49],134:[2,49],135:[2,49],136:[2,49]},{6:[2,58],25:[2,58],26:[2,58],49:[2,58],54:[2,58]},{6:[2,53],25:[2,53],26:[2,53],53:309,54:[1,202]},{1:[2,200],6:[2,200],25:[2,200],26:[2,200],49:[2,200],54:[2,200],57:[2,200],72:[2,200],77:[2,200],85:[2,200],90:[2,200],92:[2,200],101:[2,200],103:[2,200],104:[2,200],105:[2,200],109:[2,200],117:[2,200],125:[2,200],127:[2,200],128:[2,200],131:[2,200],132:[2,200],133:[2,200],134:[2,200],135:[2,200],136:[2,200]},{1:[2,179],6:[2,179],25:[2,179],26:[2,179],49:[2,179],54:[2,179],57:[2,179],72:[2,179],77:[2,179],85:[2,179],90:[2,179],92:[2,179],101:[2,179],103:[2,179],104:[2,179],105:[2,179],109:[2,179],117:[2,179],120:[2,179],125:[2,179],127:[2,179],128:[2,179],131:[2,179],132:[2,179],133:[2,179],134:[2,179],135:[2,179],136:[2,179]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],49:[2,135],54:[2,135],57:[2,135],72:[2,135],77:[2,135],85:[2,135],90:[2,135],92:[2,135],101:[2,135],103:[2,135],104:[2,135],105:[2,135],109:[2,135],117:[2,135],125:[2,135],127:[2,135],128:[2,135],131:[2,135],132:[2,135],133:[2,135],134:[2,135],135:[2,135],136:[2,135]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],49:[2,136],54:[2,136],57:[2,136],72:[2,136],77:[2,136],85:[2,136],90:[2,136],92:[2,136],97:[2,136],101:[2,136],103:[2,136],104:[2,136],105:[2,136],109:[2,136],117:[2,136],125:[2,136],127:[2,136],128:[2,136],131:[2,136],132:[2,136],133:[2,136],134:[2,136],135:[2,136],136:[2,136]},{1:[2,170],6:[2,170],25:[2,170],26:[2,170],49:[2,170],54:[2,170],57:[2,170],72:[2,170],77:[2,170],85:[2,170],90:[2,170],92:[2,170],101:[2,170],103:[2,170],104:[2,170],105:[2,170],109:[2,170],117:[2,170],125:[2,170],127:[2,170],128:[2,170],131:[2,170],132:[2,170],133:[2,170],134:[2,170],135:[2,170],136:[2,170]},{5:310,25:[1,5]},{26:[1,311]},{6:[1,312],26:[2,176],120:[2,176],122:[2,176]},{8:313,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],49:[2,102],54:[2,102],57:[2,102],72:[2,102],77:[2,102],85:[2,102],90:[2,102],92:[2,102],101:[2,102],103:[2,102],104:[2,102],105:[2,102],109:[2,102],117:[2,102],125:[2,102],127:[2,102],128:[2,102],131:[2,102],132:[2,102],133:[2,102],134:[2,102],135:[2,102],136:[2,102]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],49:[2,139],54:[2,139],57:[2,139],66:[2,139],67:[2,139],68:[2,139],70:[2,139],72:[2,139],73:[2,139],77:[2,139],83:[2,139],84:[2,139],85:[2,139],90:[2,139],92:[2,139],101:[2,139],103:[2,139],104:[2,139],105:[2,139],109:[2,139],117:[2,139],125:[2,139],127:[2,139],128:[2,139],131:[2,139],132:[2,139],133:[2,139],134:[2,139],135:[2,139],136:[2,139]},{1:[2,118],6:[2,118],25:[2,118],26:[2,118],49:[2,118],54:[2,118],57:[2,118],66:[2,118],67:[2,118],68:[2,118],70:[2,118],72:[2,118],73:[2,118],77:[2,118],83:[2,118],84:[2,118],85:[2,118],90:[2,118],92:[2,118],101:[2,118],103:[2,118],104:[2,118],105:[2,118],109:[2,118],117:[2,118],125:[2,118],127:[2,118],128:[2,118],131:[2,118],132:[2,118],133:[2,118],134:[2,118],135:[2,118],136:[2,118]},{6:[2,125],25:[2,125],26:[2,125],54:[2,125],85:[2,125],90:[2,125]},{6:[2,53],25:[2,53],26:[2,53],53:314,54:[1,226]},{6:[2,126],25:[2,126],26:[2,126],54:[2,126],85:[2,126],90:[2,126]},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],49:[2,165],54:[2,165],57:[2,165],72:[2,165],77:[2,165],85:[2,165],90:[2,165],92:[2,165],101:[2,165],102:87,103:[2,165],104:[2,165],105:[2,165],108:88,109:[2,165],110:69,117:[1,315],125:[2,165],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],49:[2,167],54:[2,167],57:[2,167],72:[2,167],77:[2,167],85:[2,167],90:[2,167],92:[2,167],101:[2,167],102:87,103:[2,167],104:[1,316],105:[2,167],108:88,109:[2,167],110:69,117:[2,167],125:[2,167],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],49:[2,166],54:[2,166],57:[2,166],72:[2,166],77:[2,166],85:[2,166],90:[2,166],92:[2,166],101:[2,166],102:87,103:[2,166],104:[2,166],105:[2,166],108:88,109:[2,166],110:69,117:[2,166],125:[2,166],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[2,93],25:[2,93],26:[2,93],54:[2,93],77:[2,93]},{6:[2,53],25:[2,53],26:[2,53],53:317,54:[1,236]},{26:[1,318],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,247],25:[1,248],26:[1,319]},{26:[1,320]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],49:[2,173],54:[2,173],57:[2,173],72:[2,173],77:[2,173],85:[2,173],90:[2,173],92:[2,173],101:[2,173],103:[2,173],104:[2,173],105:[2,173],109:[2,173],117:[2,173],125:[2,173],127:[2,173],128:[2,173],131:[2,173],132:[2,173],133:[2,173],134:[2,173],135:[2,173],136:[2,173]},{26:[2,177],120:[2,177],122:[2,177]},{25:[2,131],54:[2,131],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,266],25:[1,267],26:[1,321]},{8:322,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:323,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[1,277],25:[1,278],26:[1,324]},{6:[2,41],25:[2,41],26:[2,41],54:[2,41],77:[2,41]},{6:[2,59],25:[2,59],26:[2,59],49:[2,59],54:[2,59]},{1:[2,171],6:[2,171],25:[2,171],26:[2,171],49:[2,171],54:[2,171],57:[2,171],72:[2,171],77:[2,171],85:[2,171],90:[2,171],92:[2,171],101:[2,171],103:[2,171],104:[2,171],105:[2,171],109:[2,171],117:[2,171],125:[2,171],127:[2,171],128:[2,171],131:[2,171],132:[2,171],133:[2,171],134:[2,171],135:[2,171],136:[2,171]},{6:[2,127],25:[2,127],26:[2,127],54:[2,127],85:[2,127],90:[2,127]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],49:[2,168],54:[2,168],57:[2,168],72:[2,168],77:[2,168],85:[2,168],90:[2,168],92:[2,168],101:[2,168],102:87,103:[2,168],104:[2,168],105:[2,168],108:88,109:[2,168],110:69,117:[2,168],125:[2,168],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,169],6:[2,169],25:[2,169],26:[2,169],49:[2,169],54:[2,169],57:[2,169],72:[2,169],77:[2,169],85:[2,169],90:[2,169],92:[2,169],101:[2,169],102:87,103:[2,169],104:[2,169],105:[2,169],108:88,109:[2,169],110:69,117:[2,169],125:[2,169],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[2,94],25:[2,94],26:[2,94],54:[2,94],77:[2,94]}],
+defaultActions: {60:[2,51],61:[2,52],75:[2,3],94:[2,108],189:[2,88]},
parseError: function parseError(str, hash) {
throw new Error(str);
},
parse: function parse(input) {
- var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+ var self = this,
+ stack = [0],
+ vstack = [null], // semantic value stack
+ lstack = [], // location stack
+ table = this.table,
+ yytext = '',
+ yylineno = 0,
+ yyleng = 0,
+ recovering = 0,
+ TERROR = 2,
+ EOF = 1;
+
+ //this.reductionCount = this.shiftCount = 0;
+
this.lexer.setInput(input);
this.lexer.yy = this.yy;
this.yy.lexer = this.lexer;
- if (typeof this.lexer.yylloc == "undefined")
+ if (typeof this.lexer.yylloc == 'undefined')
this.lexer.yylloc = {};
var yyloc = this.lexer.yylloc;
lstack.push(yyloc);
- if (typeof this.yy.parseError === "function")
+
+ if (typeof this.yy.parseError === 'function')
this.parseError = this.yy.parseError;
- function popStack(n) {
- stack.length = stack.length - 2 * n;
+
+ function popStack (n) {
+ stack.length = stack.length - 2*n;
vstack.length = vstack.length - n;
lstack.length = lstack.length - n;
}
+
function lex() {
var token;
- token = self.lexer.lex() || 1;
- if (typeof token !== "number") {
+ token = self.lexer.lex() || 1; // $end = 1
+ // if token isn't its numeric value, convert
+ if (typeof token !== 'number') {
token = self.symbols_[token] || token;
}
return token;
}
- var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+
+ var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;
while (true) {
- state = stack[stack.length - 1];
+ // retreive state number from top of stack
+ state = stack[stack.length-1];
+
+ // use default actions if available
if (this.defaultActions[state]) {
action = this.defaultActions[state];
} else {
if (symbol == null)
symbol = lex();
+ // read action for current state and first input
action = table[state] && table[state][symbol];
}
- if (typeof action === "undefined" || !action.length || !action[0]) {
+
+ // handle parse error
+ _handle_error:
+ if (typeof action === 'undefined' || !action.length || !action[0]) {
+
if (!recovering) {
+ // Report error
expected = [];
- for (p in table[state])
- if (this.terminals_[p] && p > 2) {
- expected.push("'" + this.terminals_[p] + "'");
- }
- var errStr = "";
- if (this.lexer.showPosition) {
- errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + this.terminals_[symbol] + "'";
- } else {
- errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
+ for (p in table[state]) if (this.terminals_[p] && p > 2) {
+ expected.push("'"+this.terminals_[p]+"'");
}
- this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
+ var errStr = '';
+ if (this.lexer.showPosition) {
+ errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'";
+ } else {
+ errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
+ (symbol == 1 /*EOF*/ ? "end of input" :
+ ("'"+(this.terminals_[symbol] || symbol)+"'"));
+ }
+ this.parseError(errStr,
+ {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
}
- }
- if (action[0] instanceof Array && action.length > 1) {
- throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
- }
- switch (action[0]) {
- case 1:
- stack.push(symbol);
- vstack.push(this.lexer.yytext);
- lstack.push(this.lexer.yylloc);
- stack.push(action[1]);
- symbol = null;
- if (!preErrorSymbol) {
+
+ // just recovered from another error
+ if (recovering == 3) {
+ if (symbol == EOF) {
+ throw new Error(errStr || 'Parsing halted.');
+ }
+
+ // discard current lookahead and grab another
yyleng = this.lexer.yyleng;
yytext = this.lexer.yytext;
yylineno = this.lexer.yylineno;
yyloc = this.lexer.yylloc;
- if (recovering > 0)
- recovering--;
- } else {
- symbol = preErrorSymbol;
- preErrorSymbol = null;
+ symbol = lex();
}
- break;
- case 2:
- len = this.productions_[action[1]][1];
- yyval.$ = vstack[vstack.length - len];
- yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
- r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
- if (typeof r !== "undefined") {
- return r;
+
+ // try to recover from error
+ while (1) {
+ // check for error recovery rule in this state
+ if ((TERROR.toString()) in table[state]) {
+ break;
+ }
+ if (state == 0) {
+ throw new Error(errStr || 'Parsing halted.');
+ }
+ popStack(1);
+ state = stack[stack.length-1];
}
- if (len) {
- stack = stack.slice(0, -1 * len * 2);
- vstack = vstack.slice(0, -1 * len);
- lstack = lstack.slice(0, -1 * len);
- }
- stack.push(this.productions_[action[1]][0]);
- vstack.push(yyval.$);
- lstack.push(yyval._$);
- newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
- stack.push(newState);
- break;
- case 3:
- return true;
+
+ preErrorSymbol = symbol; // save the lookahead token
+ symbol = TERROR; // insert generic error symbol as new lookahead
+ state = stack[stack.length-1];
+ action = table[state] && table[state][TERROR];
+ recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
}
+
+ // this shouldn't happen, unless resolve defaults are off
+ if (action[0] instanceof Array && action.length > 1) {
+ throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
+ }
+
+ switch (action[0]) {
+
+ case 1: // shift
+ //this.shiftCount++;
+
+ stack.push(symbol);
+ vstack.push(this.lexer.yytext);
+ lstack.push(this.lexer.yylloc);
+ stack.push(action[1]); // push state
+ symbol = null;
+ if (!preErrorSymbol) { // normal execution/no error
+ yyleng = this.lexer.yyleng;
+ yytext = this.lexer.yytext;
+ yylineno = this.lexer.yylineno;
+ yyloc = this.lexer.yylloc;
+ if (recovering > 0)
+ recovering--;
+ } else { // error just occurred, resume old lookahead f/ before error
+ symbol = preErrorSymbol;
+ preErrorSymbol = null;
+ }
+ break;
+
+ case 2: // reduce
+ //this.reductionCount++;
+
+ len = this.productions_[action[1]][1];
+
+ // perform semantic action
+ yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
+ // default location, uses first token for firsts, last for lasts
+ yyval._$ = {
+ first_line: lstack[lstack.length-(len||1)].first_line,
+ last_line: lstack[lstack.length-1].last_line,
+ first_column: lstack[lstack.length-(len||1)].first_column,
+ last_column: lstack[lstack.length-1].last_column
+ };
+ r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
+
+ if (typeof r !== 'undefined') {
+ return r;
+ }
+
+ // pop off stack
+ if (len) {
+ stack = stack.slice(0,-1*len*2);
+ vstack = vstack.slice(0, -1*len);
+ lstack = lstack.slice(0, -1*len);
+ }
+
+ stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)
+ vstack.push(yyval.$);
+ lstack.push(yyval._$);
+ // goto new state = table[STATE][NONTERMINAL]
+ newState = table[stack[stack.length-2]][stack[stack.length-1]];
+ stack.push(newState);
+ break;
+
+ case 3: // accept
+ return true;
+ }
+
}
+
return true;
-}
-};
+}};
+undefined
module.exports = parser;
-});
+});
\ No newline at end of file
diff --git a/lib/ace/mode/coffee/rewriter.js b/lib/ace/mode/coffee/rewriter.js
index b8e7a6a6..f500e3d5 100644
--- a/lib/ace/mode/coffee/rewriter.js
+++ b/lib/ace/mode/coffee/rewriter.js
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 2011 Jeremy Ashkenas
+/**
+ * Copyright (c) 2009-2012 Jeremy Ashkenas
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
@@ -24,7 +24,7 @@
*/
define(function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
+// Generated by CoffeeScript 1.3.3
var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, left, rite, _i, _len, _ref,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
@@ -32,8 +32,6 @@ define(function(require, exports, module) {
exports.Rewriter = (function() {
- Rewriter.name = 'Rewriter';
-
function Rewriter() {}
Rewriter.prototype.rewrite = function(tokens) {
@@ -67,7 +65,9 @@ define(function(require, exports, module) {
if (levels === 0 && condition.call(this, token, i)) {
return action.call(this, token, i);
}
- if (!token || levels < 0) return action.call(this, token, i - 1);
+ if (!token || levels < 0) {
+ return action.call(this, token, i - 1);
+ }
if (_ref = token[0], __indexOf.call(EXPRESSION_START, _ref) >= 0) {
levels += 1;
} else if (_ref1 = token[0], __indexOf.call(EXPRESSION_END, _ref1) >= 0) {
@@ -83,9 +83,13 @@ define(function(require, exports, module) {
_ref = this.tokens;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
tag = _ref[i][0];
- if (tag !== 'TERMINATOR') break;
+ if (tag !== 'TERMINATOR') {
+ break;
+ }
+ }
+ if (i) {
+ return this.tokens.splice(0, i);
}
- if (i) return this.tokens.splice(0, i);
};
Rewriter.prototype.removeMidExpressionNewlines = function() {
@@ -109,7 +113,9 @@ define(function(require, exports, module) {
return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END';
};
return this.scanTokens(function(token, i) {
- if (token[0] === 'CALL_START') this.detectEnd(i + 1, condition, action);
+ if (token[0] === 'CALL_START') {
+ this.detectEnd(i + 1, condition, action);
+ }
return 1;
});
};
@@ -124,25 +130,32 @@ define(function(require, exports, module) {
return token[0] = 'INDEX_END';
};
return this.scanTokens(function(token, i) {
- if (token[0] === 'INDEX_START') this.detectEnd(i + 1, condition, action);
+ if (token[0] === 'INDEX_START') {
+ this.detectEnd(i + 1, condition, action);
+ }
return 1;
});
};
Rewriter.prototype.addImplicitBraces = function() {
- var action, condition, sameLine, stack, start, startIndent, startsLine;
+ var action, condition, sameLine, stack, start, startIndent, startIndex, startsLine;
stack = [];
start = null;
startsLine = null;
sameLine = true;
startIndent = 0;
+ startIndex = 0;
condition = function(token, i) {
var one, tag, three, two, _ref, _ref1;
- _ref = this.tokens.slice(i + 1, (i + 3) + 1 || 9e9), one = _ref[0], two = _ref[1], three = _ref[2];
- if ('HERECOMMENT' === (one != null ? one[0] : void 0)) return false;
+ _ref = this.tokens.slice(i + 1, +(i + 3) + 1 || 9e9), one = _ref[0], two = _ref[1], three = _ref[2];
+ if ('HERECOMMENT' === (one != null ? one[0] : void 0)) {
+ return false;
+ }
tag = token[0];
- if (__indexOf.call(LINEBREAKS, tag) >= 0) sameLine = false;
- return (((tag === 'TERMINATOR' || tag === 'OUTDENT') || (__indexOf.call(IMPLICIT_END, tag) >= 0 && sameLine)) && ((!startsLine && this.tag(i - 1) !== ',') || !((two != null ? two[0] : void 0) === ':' || (one != null ? one[0] : void 0) === '@' && (three != null ? three[0] : void 0) === ':'))) || (tag === ',' && one && ((_ref1 = one[0]) !== 'IDENTIFIER' && _ref1 !== 'NUMBER' && _ref1 !== 'STRING' && _ref1 !== '@' && _ref1 !== 'TERMINATOR' && _ref1 !== 'OUTDENT'));
+ if (__indexOf.call(LINEBREAKS, tag) >= 0) {
+ sameLine = false;
+ }
+ return (((tag === 'TERMINATOR' || tag === 'OUTDENT') || (__indexOf.call(IMPLICIT_END, tag) >= 0 && sameLine && !(i - startIndex === 1))) && ((!startsLine && this.tag(i - 1) !== ',') || !((two != null ? two[0] : void 0) === ':' || (one != null ? one[0] : void 0) === '@' && (three != null ? three[0] : void 0) === ':'))) || (tag === ',' && one && ((_ref1 = one[0]) !== 'IDENTIFIER' && _ref1 !== 'NUMBER' && _ref1 !== 'STRING' && _ref1 !== '@' && _ref1 !== 'TERMINATOR' && _ref1 !== 'OUTDENT'));
};
action = function(token, i) {
var tok;
@@ -163,6 +176,7 @@ define(function(require, exports, module) {
return 1;
}
sameLine = true;
+ startIndex = i + 1;
stack.push(['{']);
idx = ago === '@' ? i - 2 : i - 1;
while (this.tag(idx - 2) === 'HERECOMMENT') {
@@ -185,7 +199,9 @@ define(function(require, exports, module) {
condition = function(token, i) {
var post, tag, _ref, _ref1;
tag = token[0];
- if (!seenSingle && token.fromThen) return true;
+ if (!seenSingle && token.fromThen) {
+ return true;
+ }
if (tag === 'IF' || tag === 'ELSE' || tag === 'CATCH' || tag === '->' || tag === '=>' || tag === 'CLASS') {
seenSingle = true;
}
@@ -206,19 +222,27 @@ define(function(require, exports, module) {
if (tag === 'CLASS' || tag === 'IF' || tag === 'FOR' || tag === 'WHILE') {
noCall = true;
}
- _ref = tokens.slice(i - 1, (i + 1) + 1 || 9e9), prev = _ref[0], current = _ref[1], next = _ref[2];
+ _ref = tokens.slice(i - 1, +(i + 1) + 1 || 9e9), prev = _ref[0], current = _ref[1], next = _ref[2];
callObject = !noCall && tag === 'INDENT' && next && next.generated && next[0] === '{' && prev && (_ref1 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref1) >= 0);
seenSingle = false;
seenControl = false;
- if (__indexOf.call(LINEBREAKS, tag) >= 0) noCall = false;
- if (prev && !prev.spaced && tag === '?') token.call = true;
- if (token.fromThen) return 1;
+ if (__indexOf.call(LINEBREAKS, tag) >= 0) {
+ noCall = false;
+ }
+ if (prev && !prev.spaced && tag === '?') {
+ token.call = true;
+ }
+ if (token.fromThen) {
+ return 1;
+ }
if (!(callObject || (prev != null ? prev.spaced : void 0) && (prev.call || (_ref2 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref2) >= 0)) && (__indexOf.call(IMPLICIT_CALL, tag) >= 0 || !(token.spaced || token.newLine) && __indexOf.call(IMPLICIT_UNSPACED_CALL, tag) >= 0))) {
return 1;
}
tokens.splice(i, 0, this.generate('CALL_START', '(', token[2]));
this.detectEnd(i + 1, condition, action);
- if (prev[0] === '?') prev[0] = 'FUNC_EXIST';
+ if (prev[0] === '?') {
+ prev[0] = 'FUNC_EXIST';
+ }
return 2;
});
};
@@ -251,10 +275,14 @@ define(function(require, exports, module) {
if (__indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) {
starter = tag;
_ref1 = this.indentation(token, true), indent = _ref1[0], outdent = _ref1[1];
- if (starter === 'THEN') indent.fromThen = true;
+ if (starter === 'THEN') {
+ indent.fromThen = true;
+ }
tokens.splice(i + 1, 0, indent);
this.detectEnd(i + 2, condition, action);
- if (tag === 'THEN') tokens.splice(i, 1);
+ if (tag === 'THEN') {
+ tokens.splice(i, 1);
+ }
return 1;
}
return 1;
@@ -274,7 +302,9 @@ define(function(require, exports, module) {
}
};
return this.scanTokens(function(token, i) {
- if (token[0] !== 'IF') return 1;
+ if (token[0] !== 'IF') {
+ return 1;
+ }
original = token;
this.detectEnd(i + 1, condition, action);
return 1;
@@ -283,10 +313,14 @@ define(function(require, exports, module) {
Rewriter.prototype.indentation = function(token, implicit) {
var indent, outdent;
- if (implicit == null) implicit = false;
+ if (implicit == null) {
+ implicit = false;
+ }
indent = ['INDENT', 2, token[2]];
outdent = ['OUTDENT', 2, token[2]];
- if (implicit) indent.generated = outdent.generated = true;
+ if (implicit) {
+ indent.generated = outdent.generated = true;
+ }
return [indent, outdent];
};
@@ -324,7 +358,7 @@ define(function(require, exports, module) {
IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];
- IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'UNARY', 'SUPER', '@', '->', '=>', '[', '(', '{', '--', '++'];
+ IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'SUPER', '@', '->', '=>', '[', '(', '{', '--', '++'];
IMPLICIT_UNSPACED_CALL = ['+', '-'];
@@ -339,4 +373,4 @@ define(function(require, exports, module) {
LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'];
-});
+});
\ No newline at end of file
diff --git a/lib/ace/mode/coffee/scope.js b/lib/ace/mode/coffee/scope.js
index cf1cd9f3..11c0f795 100644
--- a/lib/ace/mode/coffee/scope.js
+++ b/lib/ace/mode/coffee/scope.js
@@ -1,5 +1,5 @@
-/*
- * Copyright (c) 2011 Jeremy Ashkenas
+/**
+ * Copyright (c) 2009-2012 Jeremy Ashkenas
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
@@ -24,7 +24,7 @@
*/
define(function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
+// Generated by CoffeeScript 1.3.3
var Scope, extend, last, _ref;
@@ -32,8 +32,6 @@ define(function(require, exports, module) {
exports.Scope = Scope = (function() {
- Scope.name = 'Scope';
-
Scope.root = null;
function Scope(parent, expressions, method) {
@@ -47,11 +45,15 @@ define(function(require, exports, module) {
}
];
this.positions = {};
- if (!this.parent) Scope.root = this;
+ if (!this.parent) {
+ Scope.root = this;
+ }
}
Scope.prototype.add = function(name, type, immediate) {
- if (this.shared && !immediate) return this.parent.add(name, type, immediate);
+ if (this.shared && !immediate) {
+ return this.parent.add(name, type, immediate);
+ }
if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
return this.variables[this.positions[name]].type = type;
} else {
@@ -62,22 +64,31 @@ define(function(require, exports, module) {
}
};
- Scope.prototype.find = function(name, options) {
- if (this.check(name, options)) return true;
+ Scope.prototype.namedMethod = function() {
+ if (this.method.name || !this.parent) {
+ return this.method;
+ }
+ return this.parent.namedMethod();
+ };
+
+ Scope.prototype.find = function(name) {
+ if (this.check(name)) {
+ return true;
+ }
this.add(name, 'var');
return false;
};
Scope.prototype.parameter = function(name) {
- if (this.shared && this.parent.check(name, true)) return;
+ if (this.shared && this.parent.check(name, true)) {
+ return;
+ }
return this.add(name, 'param');
};
- Scope.prototype.check = function(name, immediate) {
- var found, _ref1;
- found = !!this.type(name);
- if (found || immediate) return found;
- return !!((_ref1 = this.parent) != null ? _ref1.check(name) : void 0);
+ Scope.prototype.check = function(name) {
+ var _ref1;
+ return !!(this.type(name) || ((_ref1 = this.parent) != null ? _ref1.check(name) : void 0));
};
Scope.prototype.temporary = function(name, index) {
@@ -93,19 +104,25 @@ define(function(require, exports, module) {
_ref1 = this.variables;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
v = _ref1[_i];
- if (v.name === name) return v.type;
+ if (v.name === name) {
+ return v.type;
+ }
}
return null;
};
Scope.prototype.freeVariable = function(name, reserve) {
var index, temp;
- if (reserve == null) reserve = true;
+ if (reserve == null) {
+ reserve = true;
+ }
index = 0;
while (this.check((temp = this.temporary(name, index)))) {
index++;
}
- if (reserve) this.add(temp, 'var', true);
+ if (reserve) {
+ this.add(temp, 'var', true);
+ }
return temp;
};
@@ -141,7 +158,9 @@ define(function(require, exports, module) {
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
v = _ref1[_i];
- if (v.type.assigned) _results.push("" + v.name + " = " + v.type.value);
+ if (v.type.assigned) {
+ _results.push("" + v.name + " = " + v.type.value);
+ }
}
return _results;
};
@@ -151,4 +170,4 @@ define(function(require, exports, module) {
})();
-});
+});
\ No newline at end of file
diff --git a/lib/ace/mode/css/csslint.js b/lib/ace/mode/css/csslint.js
index 4830dda4..d5d05a98 100644
--- a/lib/ace/mode/css/csslint.js
+++ b/lib/ace/mode/css/csslint.js
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
-/* Build time: 2-March-2012 02:47:11 */
+/* Build time: 14-May-2012 10:24:48 */
/*!
Parser-Lib
@@ -47,7 +47,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
-/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */
+/* Version v0.1.7, Build time: 4-May-2012 03:57:04 */
var parserlib = {};
(function(){
@@ -957,7 +957,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
-/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */
+/* Version v0.1.7, Build time: 4-May-2012 03:57:04 */
(function(){
var EventTarget = parserlib.util.EventTarget,
TokenStreamBase = parserlib.util.TokenStreamBase,
@@ -2666,7 +2666,8 @@ Parser.prototype = function(){
expr = null,
prio = null,
error = null,
- invalid = null;
+ invalid = null,
+ propertyName= "";
property = this._property();
if (property !== null){
@@ -2683,8 +2684,20 @@ Parser.prototype = function(){
prio = this._prio();
+ /*
+ * If hacks should be allowed, then only check the root
+ * property. If hacks should not be allowed, treat
+ * _property or *property as invalid properties.
+ */
+ propertyName = property.toString();
+ if (this.options.starHack && property.hack == "*" ||
+ this.options.underscoreHack && property.hack == "_") {
+
+ propertyName = property.text;
+ }
+
try {
- this._validateProperty(property, expr);
+ this._validateProperty(propertyName, expr);
} catch (ex) {
invalid = ex;
}
@@ -3525,6 +3538,7 @@ var Properties = {
"background-repeat" : { multi: "" },
"background-size" : { multi: "", comma: true },
"baseline-shift" : "baseline | sub | super | | ",
+ "behavior" : 1,
"binding" : 1,
"bleed" : "",
"bookmark-label" : " | | ",
@@ -3871,6 +3885,7 @@ var Properties = {
"text-justify" : "auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida",
"text-outline" : 1,
"text-overflow" : 1,
+ "text-rendering" : "auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit",
"text-shadow" : 1,
"text-transform" : "capitalize | uppercase | lowercase | none | inherit",
"text-wrap" : "normal | none | avoid",
@@ -5950,7 +5965,7 @@ var ValidationTypes = {
i, len, found = false;
for (i=0,len=args.length; i < len && !found; i++){
- if (text == args[i]){
+ if (text == args[i].toLowerCase()){
found = true;
}
}
@@ -6042,7 +6057,7 @@ var ValidationTypes = {
},
"": function(part) {
- return part.type == "function" && /^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial|linear)\-gradient/i.test(part);
+ return part.type == "function" && /^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial\-|linear\-)?gradient/i.test(part);
},
"": function(part){
@@ -6134,6 +6149,18 @@ var ValidationTypes = {
part,
i, len;
+/*
+ = [
+ [ left | center | right | top | bottom | | ]
+|
+ [ left | center | right | | ]
+ [ top | center | bottom | | ]
+|
+ [ center | [ left | right ] [ | ]? ] &&
+ [ center | [ top | bottom ] [ | ]? ]
+]
+
+*/
if (ValidationTypes.isAny(expression, "top | bottom")) {
result = true;
@@ -6306,7 +6333,7 @@ var CSSLint = (function(){
formatters = [],
api = new parserlib.util.EventTarget();
- api.version = "0.9.7";
+ api.version = "0.9.8";
//-------------------------------------------------------------------------
// Rule Management
@@ -7633,7 +7660,7 @@ CSSLint.addRule({
parser.addListener("endstylesheet", function(){
reporter.stat("important", count);
if (count >= 10){
- reporter.rollupWarn("Too many !important declarations (" + count + "), try to use less than 10 to avoid specifity issues.", rule);
+ reporter.rollupWarn("Too many !important declarations (" + count + "), try to use less than 10 to avoid specificity issues.", rule);
}
});
}
@@ -8290,8 +8317,35 @@ CSSLint.addRule({
});
/*
- * Rule: Don't use text-indent for image replacement if you need to support rtl.
- *
+ * Rule: Don't use properties with a star prefix.
+ *
+ */
+/*global CSSLint*/
+CSSLint.addRule({
+
+ //rule information
+ id: "star-property-hack",
+ name: "Disallow properties with a star prefix",
+ desc: "Checks for the star property hack (targets IE6/7)",
+ browsers: "All",
+
+ //initialization
+ init: function(parser, reporter){
+ var rule = this;
+
+ //check if property name starts with "*"
+ parser.addListener("property", function(event){
+ var property = event.property;
+
+ if (property.hack == "*") {
+ reporter.report("Property with star prefix found.", event.property.line, event.property.col, rule);
+ }
+ });
+ }
+});
+/*
+ * Rule: Don't use text-indent for image replacement if you need to support rtl.
+ *
*/
/*global CSSLint*/
CSSLint.addRule({
@@ -8301,27 +8355,29 @@ CSSLint.addRule({
name: "Disallow negative text-indent",
desc: "Checks for text indent less than -99px",
browsers: "All",
-
+
//initialization
init: function(parser, reporter){
var rule = this,
- textIndent = false;
-
-
+ textIndent,
+ direction;
+
+
function startRule(event){
textIndent = false;
+ direction = "inherit";
}
-
+
//event handler for end of rules
function endRule(event){
- if (textIndent){
+ if (textIndent && direction != "ltr"){
reporter.report("Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.", textIndent.line, textIndent.col, rule);
}
- }
-
+ }
+
parser.addListener("startrule", startRule);
parser.addListener("startfontface", startRule);
-
+
//check for use of "font-size"
parser.addListener("property", function(event){
var name = event.property.toString().toLowerCase(),
@@ -8330,16 +8386,43 @@ CSSLint.addRule({
if (name == "text-indent" && value.parts[0].value < -99){
textIndent = event.property;
} else if (name == "direction" && value == "ltr"){
- textIndent = false;
+ direction = "ltr";
}
});
parser.addListener("endrule", endRule);
- parser.addListener("endfontface", endRule);
+ parser.addListener("endfontface", endRule);
}
});
+/*
+ * Rule: Don't use properties with a underscore prefix.
+ *
+ */
+/*global CSSLint*/
+CSSLint.addRule({
+
+ //rule information
+ id: "underscore-property-hack",
+ name: "Disallow properties with an underscore prefix",
+ desc: "Checks for the underscore property hack (targets IE6)",
+ browsers: "All",
+
+ //initialization
+ init: function(parser, reporter){
+ var rule = this;
+
+ //check if property name starts with "_"
+ parser.addListener("property", function(event){
+ var property = event.property;
+
+ if (property.hack == "_") {
+ reporter.report("Property with underscore prefix found.", event.property.line, event.property.col, rule);
+ }
+ });
+ }
+});
/*
* Rule: Headings (h1-h6) should be defined only once.
*/
@@ -8669,85 +8752,114 @@ CSSLint.addRule({
});
/*global CSSLint*/
-CSSLint.addFormatter({
- //format information
- id: "checkstyle-xml",
- name: "Checkstyle XML format",
+(function() {
/**
- * Return opening root XML tag.
- * @return {String} to prepend before all results
+ * Replace special characters before write to output.
+ *
+ * Rules:
+ * - single quotes is the escape sequence for double-quotes
+ * - & is the escape sequence for &
+ * - < is the escape sequence for <
+ * - > is the escape sequence for >
+ *
+ * @param {String} message to escape
+ * @return escaped message as {String}
*/
- startFormat: function(){
- return "";
- },
-
- /**
- * Return closing root XML tag.
- * @return {String} to append after all results
- */
- endFormat: function(){
- return " ";
- },
-
- /**
- * Given CSS Lint results for a file, return output for this format.
- * @param results {Object} with error and warning messages
- * @param filename {String} relative file path
- * @param options {Object} (UNUSED for now) specifies special handling of output
- * @return {String} output for results
- */
- formatResults: function(results, filename, options) {
- var messages = results.messages,
- output = [];
-
- /**
- * Generate a source string for a rule.
- * Checkstyle source strings usually resemble Java class names e.g
- * net.csslint.SomeRuleName
- * @param {Object} rule
- * @return rule source as {String}
- */
- var generateSource = function(rule) {
- if (!rule || !('name' in rule)) {
- return "";
- }
- return 'net.csslint.' + rule.name.replace(/\s/g,'');
- };
-
- /**
- * Replace special characters before write to output.
- *
- * Rules:
- * - single quotes is the escape sequence for double-quotes
- * - < is the escape sequence for <
- * - > is the escape sequence for >
- *
- * @param {String} message to escape
- * @return escaped message as {String}
- */
- var escapeSpecialCharacters = function(str) {
- if (!str || str.constructor !== String) {
- return "";
- }
- return str.replace(/\"/g, "'").replace(//g, ">");
- };
-
- if (messages.length > 0) {
- output.push("");
- CSSLint.Util.forEach(messages, function (message, i) {
- //ignore rollups for now
- if (!message.rollup) {
- output.push(" ");
- }
- });
- output.push(" ");
+ var xmlEscape = function(str) {
+ if (!str || str.constructor !== String) {
+ return "";
}
+
+ return str.replace(/[\"&><]/g, function(match) {
+ switch (match) {
+ case "\"":
+ return """;
+ case "&":
+ return "&";
+ case "<":
+ return "<";
+ case ">":
+ return ">";
+ }
+ });
+ };
- return output.join("");
- }
-});
+ CSSLint.addFormatter({
+ //format information
+ id: "checkstyle-xml",
+ name: "Checkstyle XML format",
+
+ /**
+ * Return opening root XML tag.
+ * @return {String} to prepend before all results
+ */
+ startFormat: function(){
+ return "";
+ },
+
+ /**
+ * Return closing root XML tag.
+ * @return {String} to append after all results
+ */
+ endFormat: function(){
+ return " ";
+ },
+
+ /**
+ * Returns message when there is a file read error.
+ * @param {String} filename The name of the file that caused the error.
+ * @param {String} message The error message
+ * @return {String} The error message.
+ */
+ readError: function(filename, message) {
+ return " ";
+ },
+
+ /**
+ * Given CSS Lint results for a file, return output for this format.
+ * @param results {Object} with error and warning messages
+ * @param filename {String} relative file path
+ * @param options {Object} (UNUSED for now) specifies special handling of output
+ * @return {String} output for results
+ */
+ formatResults: function(results, filename, options) {
+ var messages = results.messages,
+ output = [];
+
+ /**
+ * Generate a source string for a rule.
+ * Checkstyle source strings usually resemble Java class names e.g
+ * net.csslint.SomeRuleName
+ * @param {Object} rule
+ * @return rule source as {String}
+ */
+ var generateSource = function(rule) {
+ if (!rule || !('name' in rule)) {
+ return "";
+ }
+ return 'net.csslint.' + rule.name.replace(/\s/g,'');
+ };
+
+
+
+ if (messages.length > 0) {
+ output.push("");
+ CSSLint.Util.forEach(messages, function (message, i) {
+ //ignore rollups for now
+ if (!message.rollup) {
+ output.push(" ");
+ }
+ });
+ output.push(" ");
+ }
+
+ return output.join("");
+ }
+ });
+
+}());
/*global CSSLint*/
CSSLint.addFormatter({
//format information
@@ -8845,6 +8957,7 @@ CSSLint.addFormatter({
*
* Rules:
* - single quotes is the escape sequence for double-quotes
+ * - & is the escape sequence for &
* - < is the escape sequence for <
* - > is the escape sequence for >
*
@@ -8855,7 +8968,7 @@ CSSLint.addFormatter({
if (!str || str.constructor !== String) {
return "";
}
- return str.replace(/\"/g, "'").replace(//g, ">");
+ return str.replace(/\"/g, "'").replace(/&/g, "&").replace(//g, ">");
};
if (messages.length > 0) {
@@ -8912,6 +9025,7 @@ CSSLint.addFormatter({
*
* Rules:
* - single quotes is the escape sequence for double-quotes
+ * - & is the escape sequence for &
* - < is the escape sequence for <
* - > is the escape sequence for >
*
@@ -8922,7 +9036,7 @@ CSSLint.addFormatter({
if (!str || str.constructor !== String) {
return "";
}
- return str.replace(/\"/g, "'").replace(//g, ">");
+ return str.replace(/\"/g, "'").replace(/&/g, "&").replace(//g, ">");
};
if (messages.length > 0) {
diff --git a/lib/ace/worker/jshint.js b/lib/ace/worker/jshint.js
index ad54b555..5069fbe0 100644
--- a/lib/ace/worker/jshint.js
+++ b/lib/ace/worker/jshint.js
@@ -29,7 +29,7 @@ define(function(require, exports, module) {
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * JSHint was forked from 2010-12-16 edition of JSLint.
+ * JSHint was forked from the 2010-12-16 edition of JSLint.
*
*/
@@ -56,8 +56,8 @@ define(function(require, exports, module) {
JSHINT.errors is an array of objects containing these members:
{
- line : The line (relative to 0) at which the lint was found
- character : The character (relative to 0) at which the lint was found
+ line : The line (relative to 1) at which the lint was found
+ character : The character (relative to 1) at which the lint was found
reason : The problem
evidence : The text line in which the problem occurred
raw : The raw message before the details were inserted
@@ -70,15 +70,6 @@ define(function(require, exports, module) {
If a fatal error was found, a null will be the last element of the
JSHINT.errors array.
- You can request a Function Report, which shows all of the functions
- and the parameters and vars that they use. This can be used to find
- implied global variables and other problems. The report is in HTML and
- can be inserted in an HTML .
-
- var myReport = JSHINT.report(limited);
-
- If limited is true, then the report will be limited to only errors.
-
You can request a data structure which contains JSHint's results.
var myData = JSHINT.data();
@@ -97,7 +88,9 @@ define(function(require, exports, module) {
functions: [
name: STRING,
line: NUMBER,
+ character: NUMBER,
last: NUMBER,
+ lastcharacter: NUMBER,
param: [
STRING
],
@@ -153,19 +146,20 @@ define(function(require, exports, module) {
/*jshint
evil: true, nomen: false, onevar: false, regexp: false, strict: true, boss: true,
- undef: true, maxlen: 100, indent:4
+ undef: true, maxlen: 100, indent: 4, quotmark: double, unused: true
*/
/*members "\b", "\t", "\n", "\f", "\r", "!=", "!==", "\"", "%", "(begin)",
- "(breakage)", "(context)", "(error)", "(global)", "(identifier)", "(last)",
- "(line)", "(loopage)", "(name)", "(onevar)", "(params)", "(scope)",
- "(statement)", "(verb)", "*", "+", "++", "-", "--", "\/", "<", "<=", "==",
+ "(breakage)", "(character)", "(context)", "(error)", "(explicitNewcap)", "(global)",
+ "(identifier)", "(last)", "(lastcharacter)", "(line)", "(loopage)", "(metrics)",
+ "(name)", "(onevar)", "(params)", "(scope)", "(statement)", "(verb)", "(tokens)",
+ "*", "+", "++", "-", "--", "\/", "<", "<=", "==",
"===", ">", ">=", $, $$, $A, $F, $H, $R, $break, $continue, $w, Abstract, Ajax,
__filename, __dirname, ActiveXObject, Array, ArrayBuffer, ArrayBufferView, Audio,
- Autocompleter, Assets, Boolean, Builder, Buffer, Browser, COM, CScript, Canvas,
- CustomAnimation, Class, Control, Chain, Color, Cookie, Core, DataView, Date,
- Debug, Draggable, Draggables, Droppables, Document, DomReady, DOMReady, DOMParser, Drag,
- E, Enumerator, Enumerable, Element, Elements, Error, Effect, EvalError, Event,
+ Autocompleter, Asset, Boolean, Builder, Buffer, Browser, Blob, COM, CScript, Canvas,
+ CustomAnimation, Class, Control, ComplexityCount, Chain, Color, Cookie, Core, DataView, Date,
+ Debug, Draggable, Draggables, Droppables, Document, DomReady, DOMEvent, DOMReady, DOMParser,
+ Drag, E, Enumerator, Enumerable, Element, Elements, Error, Effect, EvalError, Event,
Events, FadeAnimation, Field, Flash, Float32Array, Float64Array, Form,
FormField, Frame, FormData, Function, Fx, GetObject, Group, Hash, HotKey,
HTMLElement, HTMLAnchorElement, HTMLBaseElement, HTMLBlockquoteElement,
@@ -182,49 +176,53 @@ define(function(require, exports, module) {
HtmlTable, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement,
HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement,
HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement, HTMLVideoElement,
- Iframe, IframeShim, Image, Int16Array, Int32Array, Int8Array,
+ Iframe, IframeShim, Image, importScripts, Int16Array, Int32Array, Int8Array,
Insertion, InputValidator, JSON, Keyboard, Locale, LN10, LN2, LOG10E, LOG2E,
- MAX_VALUE, MIN_VALUE, Mask, Math, MenuItem, MessageChannel, MessageEvent, MessagePort,
- MoveAnimation, MooTools, Native, NEGATIVE_INFINITY, Number, Object, ObjectRange, Option,
- Options, OverText, PI, POSITIVE_INFINITY, PeriodicalExecuter, Point, Position, Prototype,
- RangeError, Rectangle, ReferenceError, RegExp, ResizeAnimation, Request, RotateAnimation,
+ MAX_VALUE, MIN_VALUE, Map, Mask, Math, MenuItem, MessageChannel, MessageEvent, MessagePort,
+ MoveAnimation, MooTools, MutationObserver, NaN, Native, NEGATIVE_INFINITY, Node, NodeFilter,
+ Number, Object, ObjectRange,
+ Option, Options, OverText, PI, POSITIVE_INFINITY, PeriodicalExecuter, Point, Position, Prototype,
+ RangeError, Rectangle, ReferenceError, RegExp, ResizeAnimation, Request, RotateAnimation, Set,
SQRT1_2, SQRT2, ScrollBar, ScriptEngine, ScriptEngineBuildVersion,
ScriptEngineMajorVersion, ScriptEngineMinorVersion, Scriptaculous, Scroller,
Slick, Slider, Selector, SharedWorker, String, Style, SyntaxError, Sortable, Sortables,
SortableObserver, Sound, Spinner, System, Swiff, Text, TextArea, Template,
Timer, Tips, Type, TypeError, Toggle, Try, "use strict", unescape, URI, URIError, URL,
- VBArray, WSH, WScript, XDomainRequest, Web, Window, XMLDOM, XMLHttpRequest, XMLSerializer,
+ VBArray, WeakMap, WSH, WScript, XDomainRequest, Web, Window, XMLDOM, XMLHttpRequest, XMLSerializer,
XPathEvaluator, XPathException, XPathExpression, XPathNamespace, XPathNSResolver, XPathResult,
- "\\", a, addEventListener, address, alert, apply, applicationCache, arguments, arity, asi, atob,
- b, basic, basicToken, bitwise, block, blur, boolOptions, boss, browser, btoa, c, call, callee,
- caller, cases, charAt, charCodeAt, character, clearInterval, clearTimeout,
- close, closed, closure, comment, condition, confirm, console, constructor,
- content, couch, create, css, curly, d, data, datalist, dd, debug, decodeURI,
- decodeURIComponent, defaultStatus, defineClass, deserialize, devel, document,
- dojo, dijit, dojox, define, else, emit, encodeURI, encodeURIComponent,
- entityify, eqeqeq, eqnull, errors, es5, escape, esnext, eval, event, evidence, evil,
- ex, exception, exec, exps, expr, exports, FileReader, first, floor, focus,
+ "\\", a, abs, addEventListener, address, alert, apply, applicationCache, arguments, arity,
+ asi, atob, b, basic, basicToken, bitwise, blacklist, block, blur, boolOptions, boss,
+ browser, btoa, c, call, callee, caller, camelcase, cases, charAt, charCodeAt, character,
+ clearInterval, clearTimeout, close, closed, closure, comment, complexityCount, condition,
+ confirm, console, constructor, content, couch, create, css, curly, d, data, datalist, dd, debug,
+ decodeURI, decodeURIComponent, defaultStatus, defineClass, deserialize, devel, document,
+ dojo, dijit, dojox, define, else, emit, encodeURI, encodeURIComponent, elem,
+ eqeq, eqeqeq, eqnull, errors, es5, escape, esnext, eval, event, evidence, evil,
+ ex, exception, exec, exps, expr, exports, FileReader, first, floor, focus, forEach,
forin, fragment, frames, from, fromCharCode, fud, funcscope, funct, function, functions,
g, gc, getComputedStyle, getRow, getter, getterToken, GLOBAL, global, globals, globalstrict,
hasOwnProperty, help, history, i, id, identifier, immed, implieds, importPackage, include,
- indent, indexOf, init, ins, instanceOf, isAlpha, isApplicationRunning, isArray,
+ indent, indexOf, init, ins, internals, instanceOf, isAlpha, isApplicationRunning, isArray,
isDigit, isFinite, isNaN, iterator, java, join, jshint,
- JSHINT, json, jquery, jQuery, keys, label, labelled, last, lastsemic, laxbreak, laxcomma,
- latedef, lbp, led, left, length, line, load, loadClass, localStorage, location,
- log, loopfunc, m, match, maxerr, maxlen, member,message, meta, module, moveBy,
- moveTo, mootools, multistr, name, navigator, new, newcap, noarg, node, noempty, nomen,
- nonew, nonstandard, nud, onbeforeunload, onblur, onerror, onevar, onecase, onfocus,
- onload, onresize, onunload, open, openDatabase, openURL, opener, opera, options, outer, param,
- parent, parseFloat, parseInt, passfail, plusplus, predef, print, process, prompt,
- proto, prototype, prototypejs, provides, push, quit, range, raw, reach, reason, regexp,
- readFile, readUrl, regexdash, removeEventListener, replace, report, require,
- reserved, resizeBy, resizeTo, resolvePath, resumeUpdates, respond, rhino, right,
- runCommand, scroll, screen, scripturl, scrollBy, scrollTo, scrollbar, search, seal,
- send, serialize, sessionStorage, setInterval, setTimeout, setter, setterToken, shift, slice,
- smarttabs, sort, spawn, split, stack, status, start, strict, sub, substr, supernew, shadow,
- supplant, sum, sync, test, toLowerCase, toString, toUpperCase, toint32, token, top, trailing,
- type, typeOf, Uint16Array, Uint32Array, Uint8Array, undef, undefs, unused, urls, validthis,
- value, valueOf, var, version, WebSocket, withstmt, white, window, Worker, wsh*/
+ JSHINT, json, jquery, jQuery, keys, label, labelled, last, lastcharacter, lastsemic, laxbreak,
+ laxcomma, latedef, lbp, led, left, length, line, load, loadClass, localStorage, location,
+ log, loopfunc, m, match, max, maxcomplexity, maxdepth, maxerr, maxlen, maxstatements, maxparams,
+ member, message, meta, module, moveBy, moveTo, mootools, multistr, name, navigator, new, newcap,
+ nestedBlockDepth, noarg, node, noempty, nomen, nonew, nonstandard, nud, onbeforeunload, onblur,
+ onerror, onevar, onecase, onfocus, onload, onresize, onunload, open, openDatabase, openURL,
+ opener, opera, options, outer, param, parent, parseFloat, parseInt, passfail, plusplus,
+ postMessage, pop, predef, print, process, prompt, proto, prototype, prototypejs, provides, push,
+ quit, quotmark, range, raw, reach, reason, regexp, readFile, readUrl, regexdash,
+ removeEventListener, replace, report, require, reserved, resizeBy, resizeTo, resolvePath,
+ resumeUpdates, respond, rhino, right, runCommand, scroll, scope, screen, scripturl, scrollBy,
+ scrollTo, scrollbar, search, seal, self, send, serialize, sessionStorage, setInterval, setTimeout,
+ setter, setterToken, shift, slice, smarttabs, sort, spawn, split, statementCount, stack, status,
+ start, strict, sub, substr, supernew, shadow, supplant, sum, sync, test, toLowerCase, toString,
+ toUpperCase, toint32, token, tokens, top, trailing, type, typeOf, Uint16Array, Uint32Array,
+ Uint8Array, undef, undefs, unused, urls, validthis, value, valueOf, var, vars, version,
+ verifyMaxParametersPerFunction, verifyMaxStatementsPerFunction, verifyMaxComplexityPerFunction,
+ verifyMaxNestedBlockDepthPerFunction, WebSocket, withstmt, white, window, windows, Worker, worker,
+ wsh*/
/*global exports: false */
@@ -240,19 +238,19 @@ var JSHINT = (function () {
// These are operators that should not be used with the ! operator.
bang = {
- '<' : true,
- '<=' : true,
- '==' : true,
- '===': true,
- '!==': true,
- '!=' : true,
- '>' : true,
- '>=' : true,
- '+' : true,
- '-' : true,
- '*' : true,
- '/' : true,
- '%' : true
+ "<" : true,
+ "<=" : true,
+ "==" : true,
+ "===": true,
+ "!==": true,
+ "!=" : true,
+ ">" : true,
+ ">=" : true,
+ "+" : true,
+ "-" : true,
+ "*" : true,
+ "/" : true,
+ "%" : true
},
// These are the JSHint boolean options.
@@ -261,6 +259,7 @@ var JSHINT = (function () {
bitwise : true, // if bitwise operators should not be allowed
boss : true, // if advanced usage of assignments should be allowed
browser : true, // if the standard browser globals should be predefined
+ camelcase : true, // if identifiers should be required in camel case
couch : true, // if CouchDB globals should be predefined
curly : true, // if curly braces around all blocks should be required
debug : true, // if debugger statements should be allowed
@@ -312,6 +311,7 @@ var JSHINT = (function () {
regexp : true, // if the . should not be allowed in regexp literals
rhino : true, // if the Rhino environment globals should be predefined
undef : true, // if variables should be declared before used
+ unused : true, // if variables should be always used
scripturl : true, // if script-targeted URLs should be tolerated
shadow : true, // if variable shadowing should be tolerated
smarttabs : true, // if smarttabs should be tolerated
@@ -325,6 +325,7 @@ var JSHINT = (function () {
// This is a function scoped option only.
withstmt : true, // if with statements should be allowed
white : true, // if strict whitespace rules apply
+ worker : true, // if Web Worker script symbols should be allowed
wsh : true // if the Windows Scripting Host environment globals
// should be predefined
},
@@ -332,10 +333,41 @@ var JSHINT = (function () {
// These are the JSHint options that can take any value
// (we use this object to detect invalid options)
valOptions = {
- maxlen: false,
- indent: false,
- maxerr: false,
- predef: false
+ maxlen : false,
+ indent : false,
+ maxerr : false,
+ predef : false,
+ quotmark : false, //'single'|'double'|true
+ scope : false,
+ maxstatements: false, // {int} max statements per function
+ maxdepth : false, // {int} max nested block depth per function
+ maxparams : false, // {int} max params per function
+ maxcomplexity: false // {int} max cyclomatic complexity per function
+ },
+
+ // These are JSHint boolean options which are shared with JSLint
+ // where the definition in JSHint is opposite JSLint
+ invertedOptions = {
+ bitwise : true,
+ forin : true,
+ newcap : true,
+ nomen : true,
+ plusplus : true,
+ regexp : true,
+ undef : true,
+ white : true,
+
+ // Inverted and renamed, use JSHint name here
+ eqeqeq : true,
+ onevar : true
+ },
+
+ // These are JSHint boolean options which are shared with JSLint
+ // where the name has been changed but the effect is unchanged
+ renamedOptions = {
+ eqeq : "eqeqeq",
+ vars : "onevar",
+ windows : "wsh"
},
@@ -345,6 +377,7 @@ var JSHINT = (function () {
ArrayBuffer : false,
ArrayBufferView : false,
Audio : false,
+ Blob : false,
addEventListener : false,
applicationCache : false,
atob : false,
@@ -433,7 +466,10 @@ var JSHINT = (function () {
MessagePort : false,
moveBy : false,
moveTo : false,
+ MutationObserver : false,
name : false,
+ Node : false,
+ NodeFilter : false,
navigator : false,
onbeforeunload : true,
onblur : true,
@@ -491,6 +527,8 @@ var JSHINT = (function () {
provides : false
},
+ declared, // Globals that were declared using /*global ... */ syntax.
+
devel = {
alert : false,
confirm : false,
@@ -508,22 +546,11 @@ var JSHINT = (function () {
"require" : false
},
- escapes = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '/' : '\\/',
- '\\': '\\\\'
- },
-
funct, // The current function
functionicity = [
- 'closure', 'exception', 'global', 'label',
- 'outer', 'unused', 'var'
+ "closure", "exception", "global", "label",
+ "outer", "unused", "var"
],
functions, // All of the functions
@@ -535,7 +562,7 @@ var JSHINT = (function () {
jsonmode,
jquery = {
- '$' : false,
+ "$" : false,
jQuery : false
},
@@ -545,9 +572,9 @@ var JSHINT = (function () {
membersOnly,
mootools = {
- '$' : false,
- '$$' : false,
- Assets : false,
+ "$" : false,
+ "$$" : false,
+ Asset : false,
Browser : false,
Chain : false,
Class : false,
@@ -556,6 +583,7 @@ var JSHINT = (function () {
Core : false,
Document : false,
DomReady : false,
+ DOMEvent : false,
DOMReady : false,
Drag : false,
Element : false,
@@ -598,7 +626,7 @@ var JSHINT = (function () {
__dirname : false,
Buffer : false,
console : false,
- exports : false,
+ exports : true, // In Node it is ok to exports = module.exports = foo();
GLOBAL : false,
global : false,
module : false,
@@ -617,15 +645,15 @@ var JSHINT = (function () {
prevtoken,
prototypejs = {
- '$' : false,
- '$$' : false,
- '$A' : false,
- '$F' : false,
- '$H' : false,
- '$R' : false,
- '$break' : false,
- '$continue' : false,
- '$w' : false,
+ "$" : false,
+ "$$" : false,
+ "$A" : false,
+ "$F" : false,
+ "$H" : false,
+ "$R" : false,
+ "$break" : false,
+ "$continue" : false,
+ "$w" : false,
Abstract : false,
Ajax : false,
Class : false,
@@ -657,6 +685,8 @@ var JSHINT = (function () {
Scriptaculous : false
},
+ quotmark,
+
rhino = {
defineClass : false,
deserialize : false,
@@ -693,14 +723,16 @@ var JSHINT = (function () {
encodeURI : false,
encodeURIComponent : false,
Error : false,
- 'eval' : false,
+ "eval" : false,
EvalError : false,
Function : false,
hasOwnProperty : false,
isFinite : false,
isNaN : false,
JSON : false,
+ Map : false,
Math : false,
+ NaN : false,
Number : false,
Object : false,
parseInt : false,
@@ -708,10 +740,12 @@ var JSHINT = (function () {
RangeError : false,
ReferenceError : false,
RegExp : false,
+ Set : false,
String : false,
SyntaxError : false,
TypeError : false,
- URIError : false
+ URIError : false,
+ WeakMap : false
},
// widely adopted global names that are not part of ECMAScript standard
@@ -720,29 +754,21 @@ var JSHINT = (function () {
unescape : false
},
- standard_member = {
- E : true,
- LN2 : true,
- LN10 : true,
- LOG2E : true,
- LOG10E : true,
- MAX_VALUE : true,
- MIN_VALUE : true,
- NEGATIVE_INFINITY : true,
- PI : true,
- POSITIVE_INFINITY : true,
- SQRT1_2 : true,
- SQRT2 : true
- },
-
directive,
syntax = {},
tab,
token,
+ unuseds,
urls,
useESNextSyntax,
warnings,
+ worker = {
+ importScripts : true,
+ postMessage : true,
+ self : true
+ },
+
wsh = {
ActiveXObject : true,
Enumerator : true,
@@ -776,7 +802,7 @@ var JSHINT = (function () {
nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
// star slash
- lx = /\*\/|\/\*/;
+ lx = /\*\//;
// identifier
ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/;
@@ -791,10 +817,8 @@ var JSHINT = (function () {
function F() {} // Used by Object.create
function is_own(object, name) {
-
-// The object.hasOwnProperty method fails when the property under consideration
-// is named 'hasOwnProperty'. So we have to use this more convoluted form.
-
+ // The object.hasOwnProperty method fails when the property under consideration
+ // is named 'hasOwnProperty'. So we have to use this more convoluted form.
return Object.prototype.hasOwnProperty.call(object, name);
}
@@ -804,22 +828,74 @@ var JSHINT = (function () {
}
}
-// Provide critical ES5 functions to ES3.
+ function isString(obj) {
+ return Object.prototype.toString.call(obj) === "[object String]";
+ }
- if (typeof Array.isArray !== 'function') {
+ // Provide critical ES5 functions to ES3.
+
+ if (typeof Array.isArray !== "function") {
Array.isArray = function (o) {
- return Object.prototype.toString.apply(o) === '[object Array]';
+ return Object.prototype.toString.apply(o) === "[object Array]";
};
}
- if (typeof Object.create !== 'function') {
+ if (!Array.prototype.forEach) {
+ Array.prototype.forEach = function (fn, scope) {
+ var len = this.length;
+
+ for (var i = 0; i < len; i++) {
+ fn.call(scope || this, this[i], i, this);
+ }
+ };
+ }
+
+ if (!Array.prototype.indexOf) {
+ Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
+ if (this === null || this === undefined) {
+ throw new TypeError();
+ }
+
+ var t = new Object(this);
+ var len = t.length >>> 0;
+
+ if (len === 0) {
+ return -1;
+ }
+
+ var n = 0;
+ if (arguments.length > 0) {
+ n = Number(arguments[1]);
+ if (n != n) { // shortcut for verifying if it's NaN
+ n = 0;
+ } else if (n !== 0 && n != Infinity && n != -Infinity) {
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
+ }
+ }
+
+ if (n >= len) {
+ return -1;
+ }
+
+ var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
+ for (; k < len; k++) {
+ if (k in t && t[k] === searchElement) {
+ return k;
+ }
+ }
+
+ return -1;
+ };
+ }
+
+ if (typeof Object.create !== "function") {
Object.create = function (o) {
F.prototype = o;
return new F();
};
}
- if (typeof Object.keys !== 'function') {
+ if (typeof Object.keys !== "function") {
Object.keys = function (o) {
var a = [], k;
for (k in o) {
@@ -831,74 +907,49 @@ var JSHINT = (function () {
};
}
-// Non standard methods
+ // Non standard methods
- if (typeof String.prototype.entityify !== 'function') {
- String.prototype.entityify = function () {
- return this
- .replace(/&/g, '&')
- .replace(//g, '>');
- };
+ function isAlpha(str) {
+ return (str >= "a" && str <= "z\uffff") ||
+ (str >= "A" && str <= "Z\uffff");
}
- if (typeof String.prototype.isAlpha !== 'function') {
- String.prototype.isAlpha = function () {
- return (this >= 'a' && this <= 'z\uffff') ||
- (this >= 'A' && this <= 'Z\uffff');
- };
+ function isDigit(str) {
+ return (str >= "0" && str <= "9");
}
- if (typeof String.prototype.isDigit !== 'function') {
- String.prototype.isDigit = function () {
- return (this >= '0' && this <= '9');
- };
+ function isIdentifier(token, value) {
+ if (!token)
+ return false;
+
+ if (!token.identifier || token.value !== value)
+ return false;
+
+ return true;
}
- if (typeof String.prototype.supplant !== 'function') {
- String.prototype.supplant = function (o) {
- return this.replace(/\{([^{}]*)\}/g, function (a, b) {
- var r = o[b];
- return typeof r === 'string' || typeof r === 'number' ? r : a;
- });
- };
+ function supplant(str, data) {
+ return str.replace(/\{([^{}]*)\}/g, function (a, b) {
+ var r = data[b];
+ return typeof r === "string" || typeof r === "number" ? r : a;
+ });
}
- if (typeof String.prototype.name !== 'function') {
- String.prototype.name = function () {
-
-// If the string looks like an identifier, then we can return it as is.
-// If the string contains no control characters, no quote characters, and no
-// backslash characters, then we can simply slap some quotes around it.
-// Otherwise we must also replace the offending characters with safe
-// sequences.
-
- if (ix.test(this)) {
- return this;
- }
- if (nx.test(this)) {
- return '"' + this.replace(nxg, function (a) {
- var c = escapes[a];
- if (c) {
- return c;
- }
- return '\\u' + ('0000' + a.charCodeAt().toString(16)).slice(-4);
- }) + '"';
- }
- return '"' + this + '"';
- };
- }
-
-
function combine(t, o) {
var n;
for (n in o) {
- if (is_own(o, n)) {
+ if (is_own(o, n) && !is_own(JSHINT.blacklist, n)) {
t[n] = o[n];
}
}
}
+ function updatePredefined() {
+ Object.keys(JSHINT.blacklist).forEach(function (key) {
+ delete predefined[key];
+ });
+ }
+
function assume() {
if (option.couch) {
combine(predefined, couch);
@@ -941,6 +992,10 @@ var JSHINT = (function () {
combine(predefined, mootools);
}
+ if (option.worker) {
+ combine(predefined, worker);
+ }
+
if (option.wsh) {
combine(predefined, wsh);
}
@@ -960,7 +1015,7 @@ var JSHINT = (function () {
var percentage = Math.floor((line / lines.length) * 100);
throw {
- name: 'JSHintError',
+ name: "JSHintError",
line: line,
character: chr,
message: message + " (" + percentage + "% scanned).",
@@ -975,26 +1030,27 @@ var JSHINT = (function () {
function warning(m, t, a, b, c, d) {
var ch, l, w;
t = t || nexttoken;
- if (t.id === '(end)') { // `~
+ if (t.id === "(end)") { // `~
t = token;
}
l = t.line || 0;
ch = t.from || 0;
w = {
- id: '(error)',
+ id: "(error)",
raw: m,
- evidence: lines[l - 1] || '',
+ evidence: lines[l - 1] || "",
line: l,
character: ch,
+ scope: JSHINT.scope,
a: a,
b: b,
c: c,
d: d
};
- w.reason = m.supplant(w);
+ w.reason = supplant(m, w);
JSHINT.errors.push(w);
if (option.passfail) {
- quit('Stopping. ', l, ch);
+ quit("Stopping. ", l, ch);
}
warnings += 1;
if (warnings >= option.maxerr) {
@@ -1011,7 +1067,7 @@ var JSHINT = (function () {
}
function error(m, t, a, b, c, d) {
- var w = warning(m, t, a, b, c, d);
+ warning(m, t, a, b, c, d);
}
function errorAt(m, l, ch, a, b, c, d) {
@@ -1021,6 +1077,17 @@ var JSHINT = (function () {
}, a, b, c, d);
}
+ // Tracking of "internal" scripts, like eval containing a static string
+ function addInternalSrc(elem, src) {
+ var i;
+ i = {
+ id: "(internal)",
+ elem: elem,
+ value: src
+ };
+ JSHINT.internals.push(i);
+ return i;
+ }
// lexical analysis and token construction
@@ -1043,10 +1110,11 @@ var JSHINT = (function () {
// If smarttabs option is used check for spaces followed by tabs only.
// Otherwise check for any occurence of mixed tabs and spaces.
+ // Tabs and one space followed by block comment is allowed.
if (option.smarttabs)
at = s.search(/ \t/);
else
- at = s.search(/ \t|\t /);
+ at = s.search(/ \t|\t [^\*]/);
if (at >= 0)
warningAt("Mixed spaces and tabs.", line, at + 1);
@@ -1072,46 +1140,74 @@ var JSHINT = (function () {
function it(type, value) {
var i, t;
- if (type === '(color)' || type === '(range)') {
+
+ function checkName(name) {
+ if (!option.proto && name === "__proto__") {
+ warningAt("The '{a}' property is deprecated.", line, from, name);
+ return;
+ }
+
+ if (!option.iterator && name === "__iterator__") {
+ warningAt("'{a}' is only available in JavaScript 1.7.", line, from, name);
+ return;
+ }
+
+ // Check for dangling underscores unless we're in Node
+ // environment and this identifier represents built-in
+ // Node globals with underscores.
+
+ var hasDangling = /^(_+.*|.*_+)$/.test(name);
+
+ if (option.nomen && hasDangling && name !== "_") {
+ if (option.node && token.id !== "." && /^(__dirname|__filename)$/.test(name))
+ return;
+
+ warningAt("Unexpected {a} in '{b}'.", line, from, "dangling '_'", name);
+ return;
+ }
+
+ // Check for non-camelcase names. Names like MY_VAR and
+ // _myVar are okay though.
+
+ if (option.camelcase) {
+ if (name.replace(/^_+/, "").indexOf("_") > -1 && !name.match(/^[A-Z0-9_]*$/)) {
+ warningAt("Identifier '{a}' is not in camel case.", line, from, value);
+ }
+ }
+ }
+
+ if (type === "(color)" || type === "(range)") {
t = {type: type};
- } else if (type === '(punctuator)' ||
- (type === '(identifier)' && is_own(syntax, value))) {
- t = syntax[value] || syntax['(error)'];
+ } else if (type === "(punctuator)" ||
+ (type === "(identifier)" && is_own(syntax, value))) {
+ t = syntax[value] || syntax["(error)"];
} else {
t = syntax[type];
}
+
t = Object.create(t);
- if (type === '(string)' || type === '(range)') {
+
+ if (type === "(string)" || type === "(range)") {
if (!option.scripturl && jx.test(value)) {
warningAt("Script URL.", line, from);
}
}
- if (type === '(identifier)') {
+
+ if (type === "(identifier)") {
t.identifier = true;
- if (value === '__proto__' && !option.proto) {
- warningAt("The '{a}' property is deprecated.",
- line, from, value);
- } else if (value === '__iterator__' && !option.iterator) {
- warningAt("'{a}' is only available in JavaScript 1.7.",
- line, from, value);
- } else if (option.nomen && (value.charAt(0) === '_' ||
- value.charAt(value.length - 1) === '_')) {
- if (!option.node || token.id === '.' ||
- (value !== '__dirname' && value !== '__filename')) {
- warningAt("Unexpected {a} in '{b}'.", line, from, "dangling '_'", value);
- }
- }
+ checkName(value);
}
+
t.value = value;
t.line = line;
t.character = character;
t.from = from;
i = t.id;
- if (i !== '(endline)') {
+ if (i !== "(endline)") {
prereg = i &&
- (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) ||
- i === 'return' ||
- i === 'case');
+ (("(,=:[!&|?{};".indexOf(i.charAt(i.length - 1)) >= 0) ||
+ i === "return" ||
+ i === "case");
}
return t;
}
@@ -1119,19 +1215,19 @@ var JSHINT = (function () {
// Public lex methods
return {
init: function (source) {
- if (typeof source === 'string') {
+ if (typeof source === "string") {
lines = source
- .replace(/\r\n/g, '\n')
- .replace(/\r/g, '\n')
- .split('\n');
+ .replace(/\r\n/g, "\n")
+ .replace(/\r/g, "\n")
+ .split("\n");
} else {
lines = source;
}
// If the first line is a shebang (#!), make it a blank and move on.
// Shebangs are used by Node scripts.
- if (lines[0] && lines[0].substr(0, 2) === '#!')
- lines[0] = '';
+ if (lines[0] && lines[0].substr(0, 2) === "#!")
+ lines[0] = "";
line = 0;
nextLine();
@@ -1139,7 +1235,7 @@ var JSHINT = (function () {
},
range: function (begin, end) {
- var c, value = '';
+ var c, value = "";
from = character;
if (s.charAt(0) !== begin) {
errorAt("Expected '{a}' and instead saw '{b}'.",
@@ -1150,14 +1246,14 @@ var JSHINT = (function () {
character += 1;
c = s.charAt(0);
switch (c) {
- case '':
+ case "":
errorAt("Missing '{a}'.", line, character, c);
break;
case end:
s = s.slice(1);
character += 1;
- return it('(range)', value);
- case '\\':
+ return it("(range)", value);
+ case "\\":
warningAt("Unexpected '{a}'.", line, character, c);
}
value += c;
@@ -1184,13 +1280,29 @@ var JSHINT = (function () {
}
function string(x) {
- var c, j, r = '', allowNewLine = false;
+ var c, j, r = "", allowNewLine = false;
- if (jsonmode && x !== '"') {
+ if (jsonmode && x !== "\"") {
warningAt("Strings must use doublequote.",
line, character);
}
+ if (option.quotmark) {
+ if (option.quotmark === "single" && x !== "'") {
+ warningAt("Strings must use singlequote.",
+ line, character);
+ } else if (option.quotmark === "double" && x !== "\"") {
+ warningAt("Strings must use doublequote.",
+ line, character);
+ } else if (option.quotmark === true) {
+ quotmark = quotmark || x;
+ if (quotmark !== x) {
+ warningAt("Mixed double and single quotes.",
+ line, character);
+ }
+ }
+ }
+
function esc(n) {
var i = parseInt(s.substr(j + 1, n), 16);
j += n;
@@ -1222,46 +1334,46 @@ unclosedString: for (;;) {
if (c === x) {
character += 1;
s = s.substr(j + 1);
- return it('(string)', r, x);
+ return it("(string)", r, x);
}
- if (c < ' ') {
- if (c === '\n' || c === '\r') {
+ if (c < " ") {
+ if (c === "\n" || c === "\r") {
break;
}
warningAt("Control character in string: {a}.",
line, character + j, s.slice(0, j));
- } else if (c === '\\') {
+ } else if (c === "\\") {
j += 1;
character += 1;
c = s.charAt(j);
n = s.charAt(j + 1);
switch (c) {
- case '\\':
- case '"':
- case '/':
+ case "\\":
+ case "\"":
+ case "/":
break;
- case '\'':
+ case "\'":
if (jsonmode) {
warningAt("Avoid \\'.", line, character);
}
break;
- case 'b':
- c = '\b';
+ case "b":
+ c = "\b";
break;
- case 'f':
- c = '\f';
+ case "f":
+ c = "\f";
break;
- case 'n':
- c = '\n';
+ case "n":
+ c = "\n";
break;
- case 'r':
- c = '\r';
+ case "r":
+ c = "\r";
break;
- case 't':
- c = '\t';
+ case "t":
+ c = "\t";
break;
- case '0':
- c = '\0';
+ case "0":
+ c = "\0";
// Octal literals fail in strict mode
// check if the number is between 00 and 07
// where 'n' is the token next to 'c'
@@ -1271,22 +1383,22 @@ unclosedString: for (;;) {
line, character);
}
break;
- case 'u':
+ case "u":
esc(4);
break;
- case 'v':
+ case "v":
if (jsonmode) {
warningAt("Avoid \\v.", line, character);
}
- c = '\v';
+ c = "\v";
break;
- case 'x':
+ case "x":
if (jsonmode) {
warningAt("Avoid \\x-.", line, character);
}
esc(2);
break;
- case '':
+ case "":
// last character is escape character
// always allow new line if escaped, but show
// warning if option is not set
@@ -1295,13 +1407,17 @@ unclosedString: for (;;) {
if (jsonmode) {
warningAt("Avoid EOL escapement.", line, character);
}
- c = '';
+ c = "";
character -= 1;
break;
}
warningAt("Bad escapement of EOL. Use option multistr if needed.",
line, character);
break;
+ case "!":
+ if (s.charAt(j - 2) === "<")
+ break;
+ /*falls through*/
default:
warningAt("Bad escapement.", line, character);
}
@@ -1314,74 +1430,74 @@ unclosedString: for (;;) {
for (;;) {
if (!s) {
- return it(nextLine() ? '(endline)' : '(end)', '');
+ return it(nextLine() ? "(endline)" : "(end)", "");
}
t = match(tx);
if (!t) {
- t = '';
- c = '';
- while (s && s < '!') {
+ t = "";
+ c = "";
+ while (s && s < "!") {
s = s.substr(1);
}
if (s) {
errorAt("Unexpected '{a}'.", line, character, s.substr(0, 1));
- s = '';
+ s = "";
}
} else {
// identifier
- if (c.isAlpha() || c === '_' || c === '$') {
- return it('(identifier)', t);
+ if (isAlpha(c) || c === "_" || c === "$") {
+ return it("(identifier)", t);
}
// number
- if (c.isDigit()) {
+ if (isDigit(c)) {
if (!isFinite(Number(t))) {
warningAt("Bad number '{a}'.",
line, character, t);
}
- if (s.substr(0, 1).isAlpha()) {
+ if (isAlpha(s.substr(0, 1))) {
warningAt("Missing space after '{a}'.",
line, character, t);
}
- if (c === '0') {
+ if (c === "0") {
d = t.substr(1, 1);
- if (d.isDigit()) {
- if (token.id !== '.') {
+ if (isDigit(d)) {
+ if (token.id !== ".") {
warningAt("Don't use extra leading zeros '{a}'.",
line, character, t);
}
- } else if (jsonmode && (d === 'x' || d === 'X')) {
+ } else if (jsonmode && (d === "x" || d === "X")) {
warningAt("Avoid 0x-. '{a}'.",
line, character, t);
}
}
- if (t.substr(t.length - 1) === '.') {
+ if (t.substr(t.length - 1) === ".") {
warningAt(
"A trailing decimal point can be confused with a dot '{a}'.", line, character, t);
}
- return it('(number)', t);
+ return it("(number)", t);
}
switch (t) {
// string
- case '"':
+ case "\"":
case "'":
return string(t);
// // comment
- case '//':
- s = '';
+ case "//":
+ s = "";
token.comment = true;
break;
// /* comment
- case '/*':
+ case "/*":
for (;;) {
i = s.search(lx);
if (i >= 0) {
@@ -1391,35 +1507,31 @@ unclosedString: for (;;) {
errorAt("Unclosed comment.", line, character);
}
}
- character += i + 2;
- if (s.substr(i, 1) === '/') {
- errorAt("Nested comment.", line, character);
- }
s = s.substr(i + 2);
token.comment = true;
break;
// /*members /*jshint /*global
- case '/*members':
- case '/*member':
- case '/*jshint':
- case '/*jslint':
- case '/*global':
- case '*/':
+ case "/*members":
+ case "/*member":
+ case "/*jshint":
+ case "/*jslint":
+ case "/*global":
+ case "*/":
return {
value: t,
- type: 'special',
+ type: "special",
line: line,
character: character,
from: from
};
- case '':
+ case "":
break;
// /
- case '/':
- if (token.id === '/=') {
+ case "/":
+ if (token.id === "/=") {
errorAt("A regular expression literal can be confused with '/='.",
line, from);
}
@@ -1432,10 +1544,10 @@ unclosedString: for (;;) {
c = s.charAt(l);
l += 1;
switch (c) {
- case '':
+ case "":
errorAt("Unclosed regular expression.", line, from);
- return quit('Stopping.', line, from);
- case '/':
+ return quit("Stopping.", line, from);
+ case "/":
if (depth > 0) {
warningAt("{a} unterminated regular expression " +
"group(s).", line, from + l, depth);
@@ -1453,55 +1565,55 @@ unclosedString: for (;;) {
character += l;
s = s.substr(l);
q = s.charAt(0);
- if (q === '/' || q === '*') {
+ if (q === "/" || q === "*") {
errorAt("Confusing regular expression.",
line, from);
}
- return it('(regexp)', c);
- case '\\':
+ return it("(regexp)", c);
+ case "\\":
c = s.charAt(l);
- if (c < ' ') {
+ if (c < " ") {
warningAt(
"Unexpected control character in regular expression.", line, from + l);
- } else if (c === '<') {
+ } else if (c === "<") {
warningAt(
"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
}
l += 1;
break;
- case '(':
+ case "(":
depth += 1;
b = false;
- if (s.charAt(l) === '?') {
+ if (s.charAt(l) === "?") {
l += 1;
switch (s.charAt(l)) {
- case ':':
- case '=':
- case '!':
+ case ":":
+ case "=":
+ case "!":
l += 1;
break;
default:
warningAt(
-"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l));
+"Expected '{a}' and instead saw '{b}'.", line, from + l, ":", s.charAt(l));
}
} else {
captures += 1;
}
break;
- case '|':
+ case "|":
b = false;
break;
- case ')':
+ case ")":
if (depth === 0) {
warningAt("Unescaped '{a}'.",
- line, from + l, ')');
+ line, from + l, ")");
} else {
depth -= 1;
}
break;
- case ' ':
+ case " ":
q = 1;
- while (s.charAt(l) === ' ') {
+ while (s.charAt(l) === " ") {
l += 1;
q += 1;
}
@@ -1510,19 +1622,16 @@ unclosedString: for (;;) {
"Spaces are hard to count. Use {{a}}.", line, from + l, q);
}
break;
- case '[':
+ case "[":
c = s.charAt(l);
- if (c === '^') {
+ if (c === "^") {
l += 1;
- if (option.regexp) {
- warningAt("Insecure '{a}'.",
- line, from + l, c);
- } else if (s.charAt(l) === ']') {
+ if (s.charAt(l) === "]") {
errorAt("Unescaped '{a}'.",
- line, from + l, '^');
+ line, from + l, "^");
}
}
- if (c === ']') {
+ if (c === "]") {
warningAt("Empty class.", line,
from + l - 1);
}
@@ -1532,8 +1641,8 @@ klass: do {
c = s.charAt(l);
l += 1;
switch (c) {
- case '[':
- case '^':
+ case "[":
+ case "^":
warningAt("Unescaped '{a}'.",
line, from + l, c);
if (isInRange) {
@@ -1542,35 +1651,35 @@ klass: do {
isLiteral = true;
}
break;
- case '-':
+ case "-":
if (isLiteral && !isInRange) {
isLiteral = false;
isInRange = true;
} else if (isInRange) {
isInRange = false;
- } else if (s.charAt(l) === ']') {
+ } else if (s.charAt(l) === "]") {
isInRange = true;
} else {
if (option.regexdash !== (l === 2 || (l === 3 &&
- s.charAt(1) === '^'))) {
+ s.charAt(1) === "^"))) {
warningAt("Unescaped '{a}'.",
- line, from + l - 1, '-');
+ line, from + l - 1, "-");
}
isLiteral = true;
}
break;
- case ']':
+ case "]":
if (isInRange && !option.regexdash) {
warningAt("Unescaped '{a}'.",
- line, from + l - 1, '-');
+ line, from + l - 1, "-");
}
break klass;
- case '\\':
+ case "\\":
c = s.charAt(l);
- if (c < ' ') {
+ if (c < " ") {
warningAt(
"Unexpected control character in regular expression.", line, from + l);
- } else if (c === '<') {
+ } else if (c === "<") {
warningAt(
"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
}
@@ -1580,7 +1689,7 @@ klass: do {
if (/[wsd]/i.test(c)) {
if (isInRange) {
warningAt("Unescaped '{a}'.",
- line, from + l, '-');
+ line, from + l, "-");
isInRange = false;
}
isLiteral = false;
@@ -1590,9 +1699,9 @@ klass: do {
isLiteral = true;
}
break;
- case '/':
+ case "/":
warningAt("Unescaped '{a}'.",
- line, from + l - 1, '/');
+ line, from + l - 1, "/");
if (isInRange) {
isInRange = false;
@@ -1600,7 +1709,7 @@ klass: do {
isLiteral = true;
}
break;
- case '<':
+ case "<":
if (isInRange) {
isInRange = false;
} else {
@@ -1616,35 +1725,35 @@ klass: do {
}
} while (c);
break;
- case '.':
+ case ".":
if (option.regexp) {
warningAt("Insecure '{a}'.", line,
from + l, c);
}
break;
- case ']':
- case '?':
- case '{':
- case '}':
- case '+':
- case '*':
+ case "]":
+ case "?":
+ case "{":
+ case "}":
+ case "+":
+ case "*":
warningAt("Unescaped '{a}'.", line,
from + l, c);
}
if (b) {
switch (s.charAt(l)) {
- case '?':
- case '+':
- case '*':
+ case "?":
+ case "+":
+ case "*":
l += 1;
- if (s.charAt(l) === '?') {
+ if (s.charAt(l) === "?") {
l += 1;
}
break;
- case '{':
+ case "{":
l += 1;
c = s.charAt(l);
- if (c < '0' || c > '9') {
+ if (c < "0" || c > "9") {
warningAt(
"Expected a number and instead saw '{a}'.", line, from + l, c);
}
@@ -1652,23 +1761,23 @@ klass: do {
low = +c;
for (;;) {
c = s.charAt(l);
- if (c < '0' || c > '9') {
+ if (c < "0" || c > "9") {
break;
}
l += 1;
low = +c + (low * 10);
}
high = low;
- if (c === ',') {
+ if (c === ",") {
l += 1;
high = Infinity;
c = s.charAt(l);
- if (c >= '0' && c <= '9') {
+ if (c >= "0" && c <= "9") {
l += 1;
high = +c;
for (;;) {
c = s.charAt(l);
- if (c < '0' || c > '9') {
+ if (c < "0" || c > "9") {
break;
}
l += 1;
@@ -1676,13 +1785,13 @@ klass: do {
}
}
}
- if (s.charAt(l) !== '}') {
+ if (s.charAt(l) !== "}") {
warningAt(
-"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c);
+"Expected '{a}' and instead saw '{b}'.", line, from + l, "}", c);
} else {
l += 1;
}
- if (s.charAt(l) === '?') {
+ if (s.charAt(l) === "?") {
l += 1;
}
if (low > high) {
@@ -1695,16 +1804,16 @@ klass: do {
c = s.substr(0, l - 1);
character += l;
s = s.substr(l);
- return it('(regexp)', c);
+ return it("(regexp)", c);
}
- return it('(punctuator)', t);
+ return it("(punctuator)", t);
// punctuator
- case '#':
- return it('(punctuator)', t);
+ case "#":
+ return it("(punctuator)", t);
default:
- return it('(punctuator)', t);
+ return it("(punctuator)", t);
}
}
}
@@ -1713,14 +1822,13 @@ klass: do {
}());
- function addlabel(t, type) {
-
- if (t === 'hasOwnProperty') {
+ function addlabel(t, type, token) {
+ if (t === "hasOwnProperty") {
warning("'hasOwnProperty' is a really bad name.");
}
-// Define t in the current function in the current scope.
- if (is_own(funct, t) && !funct['(global)']) {
+ // Define t in the current function in the current scope.
+ if (is_own(funct, t) && !funct["(global)"]) {
if (funct[t] === true) {
if (option.latedef)
warning("'{a}' was used before it was defined.", nexttoken, t);
@@ -1731,7 +1839,12 @@ klass: do {
}
funct[t] = type;
- if (funct['(global)']) {
+
+ if (token) {
+ funct["(tokens)"][t] = token;
+ }
+
+ if (funct["(global)"]) {
global[t] = funct;
if (is_own(implied, t)) {
if (option.latedef)
@@ -1745,27 +1858,32 @@ klass: do {
function doOption() {
- var b, obj, filter, o = nexttoken.value, t, v;
+ var nt = nexttoken;
+ var o = nt.value;
+ var quotmarkValue = option.quotmark;
+ var predef = {};
+ var b, obj, filter, t, tn, v, minus;
switch (o) {
- case '*/':
+ case "*/":
error("Unbegun comment.");
break;
- case '/*members':
- case '/*member':
- o = '/*members';
+ case "/*members":
+ case "/*member":
+ o = "/*members";
if (!membersOnly) {
membersOnly = {};
}
obj = membersOnly;
+ option.quotmark = false;
break;
- case '/*jshint':
- case '/*jslint':
+ case "/*jshint":
+ case "/*jslint":
obj = option;
filter = boolOptions;
break;
- case '/*global':
- obj = predefined;
+ case "/*global":
+ obj = predef;
break;
default:
error("What?");
@@ -1773,83 +1891,132 @@ klass: do {
t = lex.token();
loop: for (;;) {
+ minus = false;
for (;;) {
- if (t.type === 'special' && t.value === '*/') {
+ if (t.type === "special" && t.value === "*/") {
break loop;
}
- if (t.id !== '(endline)' && t.id !== ',') {
+ if (t.id !== "(endline)" && t.id !== ",") {
break;
}
t = lex.token();
}
- if (t.type !== '(string)' && t.type !== '(identifier)' &&
- o !== '/*members') {
+
+ if (o === "/*global" && t.value === "-") {
+ minus = true;
+ t = lex.token();
+ }
+
+ if (t.type !== "(string)" && t.type !== "(identifier)" && o !== "/*members") {
error("Bad option.", t);
}
v = lex.token();
- if (v.id === ':') {
+ if (v.id === ":") {
v = lex.token();
if (obj === membersOnly) {
- error("Expected '{a}' and instead saw '{b}'.",
- t, '*/', ':');
+ error("Expected '{a}' and instead saw '{b}'.", t, "*/", ":");
}
- if (o === '/*jshint') {
+ if (o === "/*jshint") {
checkOption(t.value, t);
}
- if (t.value === 'indent' && (o === '/*jshint' || o === '/*jslint')) {
+ if (t.value === "indent" && (o === "/*jshint" || o === "/*jslint")) {
b = +v.value;
- if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
+ if (typeof b !== "number" || !isFinite(b) || b <= 0 ||
Math.floor(b) !== b) {
error("Expected a small integer and instead saw '{a}'.",
v, v.value);
}
obj.white = true;
obj.indent = b;
- } else if (t.value === 'maxerr' && (o === '/*jshint' || o === '/*jslint')) {
+ } else if (t.value === "maxerr" && (o === "/*jshint" || o === "/*jslint")) {
b = +v.value;
- if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
+ if (typeof b !== "number" || !isFinite(b) || b <= 0 ||
Math.floor(b) !== b) {
error("Expected a small integer and instead saw '{a}'.",
v, v.value);
}
obj.maxerr = b;
- } else if (t.value === 'maxlen' && (o === '/*jshint' || o === '/*jslint')) {
+ } else if (t.value === "maxlen" && (o === "/*jshint" || o === "/*jslint")) {
b = +v.value;
- if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
+ if (typeof b !== "number" || !isFinite(b) || b <= 0 ||
Math.floor(b) !== b) {
error("Expected a small integer and instead saw '{a}'.",
v, v.value);
}
obj.maxlen = b;
- } else if (t.value === 'validthis') {
- if (funct['(global)']) {
+ } else if (t.value === "validthis") {
+ if (funct["(global)"]) {
error("Option 'validthis' can't be used in a global scope.");
} else {
- if (v.value === 'true' || v.value === 'false')
- obj[t.value] = v.value === 'true';
+ if (v.value === "true" || v.value === "false")
+ obj[t.value] = v.value === "true";
else
error("Bad option value.", v);
}
- } else if (v.value === 'true') {
- obj[t.value] = true;
- } else if (v.value === 'false') {
- obj[t.value] = false;
+ } else if (t.value === "quotmark" && (o === "/*jshint")) {
+ switch (v.value) {
+ case "true":
+ obj.quotmark = true;
+ break;
+ case "false":
+ obj.quotmark = false;
+ break;
+ case "double":
+ case "single":
+ obj.quotmark = v.value;
+ break;
+ default:
+ error("Bad option value.", v);
+ }
+ } else if (v.value === "true" || v.value === "false") {
+ if (o === "/*jslint") {
+ tn = renamedOptions[t.value] || t.value;
+ obj[tn] = v.value === "true";
+ if (invertedOptions[tn] !== undefined) {
+ obj[tn] = !obj[tn];
+ }
+ } else {
+ obj[t.value] = v.value === "true";
+ }
+
+ if (t.value === "newcap")
+ obj["(explicitNewcap)"] = true;
} else {
error("Bad option value.", v);
}
t = lex.token();
} else {
- if (o === '/*jshint' || o === '/*jslint') {
+ if (o === "/*jshint" || o === "/*jslint") {
error("Missing option value.", t);
}
+
obj[t.value] = false;
+
+ if (o === "/*global" && minus === true) {
+ JSHINT.blacklist[t.value] = t.value;
+ updatePredefined();
+ }
+
t = v;
}
}
+
+ if (o === "/*members") {
+ option.quotmark = quotmarkValue;
+ }
+
+ combine(predefined, predef);
+
+ for (var key in predef) {
+ if (is_own(predef, key)) {
+ declared[key] = nt;
+ }
+ }
+
if (filter) {
assume();
}
@@ -1881,36 +2048,36 @@ loop: for (;;) {
function advance(id, t) {
switch (token.id) {
- case '(number)':
- if (nexttoken.id === '.') {
+ case "(number)":
+ if (nexttoken.id === ".") {
warning("A dot following a number can be confused with a decimal point.", token);
}
break;
- case '-':
- if (nexttoken.id === '-' || nexttoken.id === '--') {
+ case "-":
+ if (nexttoken.id === "-" || nexttoken.id === "--") {
warning("Confusing minusses.");
}
break;
- case '+':
- if (nexttoken.id === '+' || nexttoken.id === '++') {
+ case "+":
+ if (nexttoken.id === "+" || nexttoken.id === "++") {
warning("Confusing plusses.");
}
break;
}
- if (token.type === '(string)' || token.identifier) {
+ if (token.type === "(string)" || token.identifier) {
anonname = token.value;
}
if (id && nexttoken.id !== id) {
if (t) {
- if (nexttoken.id === '(end)') {
+ if (nexttoken.id === "(end)") {
warning("Unmatched '{a}'.", t, t.id);
} else {
warning("Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",
nexttoken, id, t.id, t.line, nexttoken.value);
}
- } else if (nexttoken.type !== '(identifier)' ||
+ } else if (nexttoken.type !== "(identifier)" ||
nexttoken.value !== id) {
warning("Expected '{a}' and instead saw '{b}'.",
nexttoken, id, nexttoken.value);
@@ -1921,13 +2088,13 @@ loop: for (;;) {
token = nexttoken;
for (;;) {
nexttoken = lookahead.shift() || lex.token();
- if (nexttoken.id === '(end)' || nexttoken.id === '(error)') {
+ if (nexttoken.id === "(end)" || nexttoken.id === "(error)") {
return;
}
- if (nexttoken.type === 'special') {
+ if (nexttoken.type === "special") {
doOption();
} else {
- if (nexttoken.id !== '(endline)') {
+ if (nexttoken.id !== "(endline)") {
break;
}
}
@@ -1952,13 +2119,13 @@ loop: for (;;) {
function expression(rbp, initial) {
var left, isArray = false, isObject = false;
- if (nexttoken.id === '(end)')
+ if (nexttoken.id === "(end)")
error("Unexpected early end of program.", token);
advance();
if (initial) {
- anonname = 'anonymous';
- funct['(verb)'] = token.value;
+ anonname = "anonymous";
+ funct["(verb)"] = token.value;
}
if (initial === true && token.fud) {
left = token.fud();
@@ -1966,7 +2133,7 @@ loop: for (;;) {
if (token.nud) {
left = token.nud();
} else {
- if (nexttoken.type === '(number)' && token.id === '.') {
+ if (nexttoken.type === "(number)" && token.id === ".") {
warning("A leading decimal point can be confused with a dot: '.{a}'.",
token, nexttoken.value);
advance();
@@ -1977,12 +2144,31 @@ loop: for (;;) {
}
}
while (rbp < nexttoken.lbp) {
- isArray = token.value === 'Array';
- isObject = token.value === 'Object';
+ isArray = token.value === "Array";
+ isObject = token.value === "Object";
+
+ // #527, new Foo.Array(), Foo.Array(), new Foo.Object(), Foo.Object()
+ // Line breaks in IfStatement heads exist to satisfy the checkJSHint
+ // "Line too long." error.
+ if (left && (left.value || (left.first && left.first.value))) {
+ // If the left.value is not "new", or the left.first.value is a "."
+ // then safely assume that this is not "new Array()" and possibly
+ // not "new Object()"...
+ if (left.value !== "new" ||
+ (left.first && left.first.value && left.first.value === ".")) {
+ isArray = false;
+ // ...In the case of Object, if the left.value and token.value
+ // are not equal, then safely assume that this not "new Object()"
+ if (left.value !== token.value) {
+ isObject = false;
+ }
+ }
+ }
+
advance();
- if (isArray && token.id === '(' && nexttoken.id === ')')
+ if (isArray && token.id === "(" && nexttoken.id === ")")
warning("Use the array literal notation [].", token);
- if (isObject && token.id === '(' && nexttoken.id === ')')
+ if (isObject && token.id === "(" && nexttoken.id === ")")
warning("Use the object literal notation {}.", token);
if (token.led) {
left = token.led(left);
@@ -2031,6 +2217,9 @@ loop: for (;;) {
if (option.white) {
left = left || token;
right = right || nexttoken;
+ if (left.value === ";" && right.value === ";") {
+ return;
+ }
if (left.line === right.line && left.character === right.from) {
left.from += (left.character - left.from);
warning("Missing space after '{a}'.",
@@ -2057,7 +2246,7 @@ loop: for (;;) {
function indentation(bias) {
var i;
- if (option.white && nexttoken.id !== '(end)') {
+ if (option.white && nexttoken.id !== "(end)") {
i = indent + (bias || 0);
if (nexttoken.from !== i) {
warning(
@@ -2088,7 +2277,7 @@ loop: for (;;) {
token.from += (token.character - token.from);
warning("Unexpected space after '{a}'.", token, token.value);
}
- advance(',');
+ advance(",");
nonadjacent(token, nexttoken);
}
@@ -2098,7 +2287,7 @@ loop: for (;;) {
function symbol(s, p) {
var x = syntax[s];
- if (!x || typeof x !== 'object') {
+ if (!x || typeof x !== "object") {
syntax[s] = x = {
id: s,
lbp: p,
@@ -2131,7 +2320,7 @@ loop: for (;;) {
function reserveName(x) {
var c = x.id.charAt(0);
- if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+ if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z")) {
x.identifier = x.reserved = true;
}
return x;
@@ -2141,14 +2330,14 @@ loop: for (;;) {
function prefix(s, f) {
var x = symbol(s, 150);
reserveName(x);
- x.nud = (typeof f === 'function') ? f : function () {
+ x.nud = (typeof f === "function") ? f : function () {
this.right = expression(150);
- this.arity = 'unary';
- if (this.id === '++' || this.id === '--') {
+ this.arity = "unary";
+ if (this.id === "++" || this.id === "--") {
if (option.plusplus) {
warning("Unexpected use of '{a}'.", this, this.id);
} else if ((!this.right.identifier || this.right.reserved) &&
- this.right.id !== '.' && this.right.id !== '[') {
+ this.right.id !== "." && this.right.id !== "[") {
warning("Bad operand.", this);
}
}
@@ -2175,7 +2364,7 @@ loop: for (;;) {
function reservevar(s, v) {
return reserve(s, function () {
- if (typeof v === 'function') {
+ if (typeof v === "function") {
v(this);
}
return this;
@@ -2192,9 +2381,9 @@ loop: for (;;) {
nonadjacent(token, nexttoken);
}
if (s === "in" && left.id === "!") {
- warning("Confusing use of '{a}'.", left, '!');
+ warning("Confusing use of '{a}'.", left, "!");
}
- if (typeof f === 'function') {
+ if (typeof f === "function") {
return f(left, this);
} else {
this.left = left;
@@ -2212,16 +2401,17 @@ loop: for (;;) {
nobreaknonadjacent(prevtoken, token);
nonadjacent(token, nexttoken);
var right = expression(100);
- if ((left && left.id === 'NaN') || (right && right.id === 'NaN')) {
+
+ if (isIdentifier(left, "NaN") || isIdentifier(right, "NaN")) {
warning("Use the isNaN function to compare with NaN.", this);
} else if (f) {
f.apply(this, [left, right]);
}
- if (left.id === '!') {
- warning("Confusing use of '{a}'.", left, '!');
+ if (left.id === "!") {
+ warning("Confusing use of '{a}'.", left, "!");
}
- if (right.id === '!') {
- warning("Confusing use of '{a}'.", right, '!');
+ if (right.id === "!") {
+ warning("Confusing use of '{a}'.", right, "!");
}
this.left = left;
this.right = right;
@@ -2233,49 +2423,54 @@ loop: for (;;) {
function isPoorRelation(node) {
return node &&
- ((node.type === '(number)' && +node.value === 0) ||
- (node.type === '(string)' && node.value === '') ||
- (node.type === 'null' && !option.eqnull) ||
- node.type === 'true' ||
- node.type === 'false' ||
- node.type === 'undefined');
+ ((node.type === "(number)" && +node.value === 0) ||
+ (node.type === "(string)" && node.value === "") ||
+ (node.type === "null" && !option.eqnull) ||
+ node.type === "true" ||
+ node.type === "false" ||
+ node.type === "undefined");
}
- function assignop(s, f) {
+ function assignop(s) {
symbol(s, 20).exps = true;
+
return infix(s, function (left, that) {
- var l;
that.left = left;
+
if (predefined[left.value] === false &&
- scope[left.value]['(global)'] === true) {
+ scope[left.value]["(global)"] === true) {
warning("Read only.", left);
- } else if (left['function']) {
+ } else if (left["function"]) {
warning("'{a}' is a function.", left, left.value);
}
+
if (left) {
- if (option.esnext && funct[left.value] === 'const') {
+ if (option.esnext && funct[left.value] === "const") {
warning("Attempting to override '{a}' which is a constant", left, left.value);
}
- if (left.id === '.' || left.id === '[') {
- if (!left.left || left.left.value === 'arguments') {
- warning('Bad assignment.', that);
+
+ if (left.id === "." || left.id === "[") {
+ if (!left.left || left.left.value === "arguments") {
+ warning("Bad assignment.", that);
}
that.right = expression(19);
return that;
} else if (left.identifier && !left.reserved) {
- if (funct[left.value] === 'exception') {
+ if (funct[left.value] === "exception") {
warning("Do not assign to the exception parameter.", left);
}
that.right = expression(19);
return that;
}
- if (left === syntax['function']) {
+
+ if (left === syntax["function"]) {
warning(
"Expected an identifier in an assignment and instead saw a function invocation.",
token);
}
}
+
error("Bad assignment.", that);
}, 20);
}
@@ -2284,7 +2479,7 @@ loop: for (;;) {
function bitwise(s, f, p) {
var x = symbol(s, p);
reserveName(x);
- x.led = (typeof f === 'function') ? f : function (left) {
+ x.led = (typeof f === "function") ? f : function (left) {
if (option.bitwise) {
warning("Unexpected use of '{a}'.", this, this.id);
}
@@ -2305,12 +2500,12 @@ loop: for (;;) {
nonadjacent(prevtoken, token);
nonadjacent(token, nexttoken);
if (left) {
- if (left.id === '.' || left.id === '[' ||
+ if (left.id === "." || left.id === "[" ||
(left.identifier && !left.reserved)) {
expression(19);
return that;
}
- if (left === syntax['function']) {
+ if (left === syntax["function"]) {
warning(
"Expected an identifier in an assignment, and instead saw a function invocation.",
token);
@@ -2322,13 +2517,13 @@ loop: for (;;) {
}
- function suffix(s, f) {
+ function suffix(s) {
var x = symbol(s, 150);
x.led = function (left) {
if (option.plusplus) {
warning("Unexpected use of '{a}'.", this, this.id);
} else if ((!left.identifier || left.reserved) &&
- left.id !== '.' && left.id !== '[') {
+ left.id !== "." && left.id !== "[") {
warning("Bad operand.", this);
}
this.left = left;
@@ -2347,7 +2542,7 @@ loop: for (;;) {
// `undefined` as a function param is a common pattern to protect
// against the case when somebody does `undefined = true` and
// help with minification. More info: https://gist.github.com/315916
- if (!fnparam || token.value !== 'undefined') {
+ if (!fnparam || token.value !== "undefined") {
warning("Expected an identifier and instead saw '{a}' (a reserved word).",
token, token.id);
}
@@ -2363,7 +2558,7 @@ loop: for (;;) {
if (i) {
return i;
}
- if (token.id === 'function' && nexttoken.id === '(') {
+ if (token.id === "function" && nexttoken.id === "(") {
warning("Missing name in function declaration.");
} else {
error("Expected an identifier and instead saw '{a}'.",
@@ -2374,7 +2569,7 @@ loop: for (;;) {
function reachable(s) {
var i = 0, t;
- if (nexttoken.id !== ';' || noreach) {
+ if (nexttoken.id !== ";" || noreach) {
return;
}
for (;;) {
@@ -2382,8 +2577,8 @@ loop: for (;;) {
if (t.reach) {
return;
}
- if (t.id !== '(endline)') {
- if (t.id === 'function') {
+ if (t.id !== "(endline)") {
+ if (t.id === "function") {
if (!option.latedef) {
break;
}
@@ -2407,26 +2602,34 @@ loop: for (;;) {
return;
}
-// Is this a labelled statement?
+ // Is this a labelled statement?
- if (t.identifier && !t.reserved && peek().id === ':') {
+ if (t.identifier && !t.reserved && peek().id === ":") {
advance();
- advance(':');
+ advance(":");
scope = Object.create(s);
- addlabel(t.value, 'label');
- if (!nexttoken.labelled) {
- warning("Label '{a}' on {b} statement.",
- nexttoken, t.value, nexttoken.value);
+ addlabel(t.value, "label");
+
+ if (!nexttoken.labelled && nexttoken.value !== "{") {
+ warning("Label '{a}' on {b} statement.", nexttoken, t.value, nexttoken.value);
}
- if (jx.test(t.value + ':')) {
- warning("Label '{a}' looks like a javascript url.",
- t, t.value);
+
+ if (jx.test(t.value + ":")) {
+ warning("Label '{a}' looks like a javascript url.", t, t.value);
}
+
nexttoken.label = t.value;
t = nexttoken;
}
-// Parse the statement.
+ // Is it a lonely block?
+
+ if (t.id === "{") {
+ block(true, true);
+ return;
+ }
+
+ // Parse the statement.
if (!noindent) {
indentation();
@@ -2434,31 +2637,32 @@ loop: for (;;) {
r = expression(0, true);
// Look for the final semicolon.
+
if (!t.block) {
if (!option.expr && (!r || !r.exps)) {
warning("Expected an assignment or function call and instead saw an expression.",
token);
- } else if (option.nonew && r.id === '(' && r.left.id === 'new') {
- warning("Do not use 'new' for side effects.");
+ } else if (option.nonew && r.id === "(" && r.left.id === "new") {
+ warning("Do not use 'new' for side effects.", t);
}
- if (nexttoken.id === ',') {
+ if (nexttoken.id === ",") {
return comma();
}
- if (nexttoken.id !== ';') {
+ if (nexttoken.id !== ";") {
if (!option.asi) {
// If this is the last statement in a block that ends on
// the same line *and* option lastsemic is on, ignore the warning.
// Otherwise, complain about missing semicolon.
- if (!option.lastsemic || nexttoken.id !== '}' ||
+ if (!option.lastsemic || nexttoken.id !== "}" ||
nexttoken.line !== token.line) {
warningAt("Missing semicolon.", token.line, token.character);
}
}
} else {
adjacent(token, nexttoken);
- advance(';');
+ advance(";");
nonadjacent(token, nexttoken);
}
}
@@ -2472,15 +2676,15 @@ loop: for (;;) {
function statements(startLine) {
- var a = [], f, p;
+ var a = [], p;
- while (!nexttoken.reach && nexttoken.id !== '(end)') {
- if (nexttoken.id === ';') {
+ while (!nexttoken.reach && nexttoken.id !== "(end)") {
+ if (nexttoken.id === ";") {
p = peek();
if (!p || p.id !== "(") {
warning("Unnecessary semicolon.");
}
- advance(';');
+ advance(";");
} else {
a.push(statement(startLine === nexttoken.line));
}
@@ -2531,7 +2735,8 @@ loop: for (;;) {
}
if (token.value === "use strict") {
- option.newcap = true;
+ if (!option["(explicitNewcap)"])
+ option.newcap = true;
option.undef = true;
}
@@ -2571,10 +2776,14 @@ loop: for (;;) {
nonadjacent(token, nexttoken);
t = nexttoken;
- if (nexttoken.id === '{') {
- advance('{');
+ var metrics = funct["(metrics)"];
+ metrics.nestedBlockDepth += 1;
+ metrics.verifyMaxNestedBlockDepthPerFunction();
+
+ if (nexttoken.id === "{") {
+ advance("{");
line = token.line;
- if (nexttoken.id !== '}') {
+ if (nexttoken.id !== "}") {
indent += option.indent;
while (!ordinary && nexttoken.from > indent) {
indent += option.indent;
@@ -2589,7 +2798,7 @@ loop: for (;;) {
}
directives();
- if (option.strict && funct['(context)']['(global)']) {
+ if (option.strict && funct["(context)"]["(global)"]) {
if (!m["use strict"] && !directive["use strict"]) {
warning("Missing \"use strict\" statement.");
}
@@ -2598,6 +2807,8 @@ loop: for (;;) {
a = statements(line);
+ metrics.statementCount += a.length;
+
if (isfunc) {
directive = m;
}
@@ -2609,15 +2820,15 @@ loop: for (;;) {
} else if (line !== nexttoken.line) {
indentation();
}
- advance('}', t);
+ advance("}", t);
indent = old_indent;
} else if (!ordinary) {
error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, '{', nexttoken.value);
+ nexttoken, "{", nexttoken.value);
} else {
if (!stmt || option.curly)
warning("Expected '{a}' and instead saw '{b}'.",
- nexttoken, '{', nexttoken.value);
+ nexttoken, "{", nexttoken.value);
noreach = true;
indent += option.indent;
@@ -2626,21 +2837,22 @@ loop: for (;;) {
indent -= option.indent;
noreach = false;
}
- funct['(verb)'] = null;
+ funct["(verb)"] = null;
if (!ordinary || !option.funcscope) scope = s;
inblock = b;
if (ordinary && option.noempty && (!a || a.length === 0)) {
warning("Empty block.");
}
+ metrics.nestedBlockDepth -= 1;
return a;
}
function countMember(m) {
- if (membersOnly && typeof membersOnly[m] !== 'boolean') {
+ if (membersOnly && typeof membersOnly[m] !== "boolean") {
warning("Unexpected /*member '{a}'.", token, m);
}
- if (typeof member[m] === 'number') {
+ if (typeof member[m] === "number") {
member[m] += 1;
} else {
member[m] = 1;
@@ -2650,7 +2862,7 @@ loop: for (;;) {
function note_implied(token) {
var name = token.value, line = token.line, a = implied[name];
- if (typeof a === 'function') {
+ if (typeof a === "function") {
a = false;
}
@@ -2665,16 +2877,16 @@ loop: for (;;) {
// Build the syntax table by declaring the syntactic elements of the language.
- type('(number)', function () {
+ type("(number)", function () {
return this;
});
- type('(string)', function () {
+ type("(string)", function () {
return this;
});
- syntax['(identifier)'] = {
- type: '(identifier)',
+ syntax["(identifier)"] = {
+ type: "(identifier)",
lbp: 0,
identifier: true,
nud: function () {
@@ -2682,13 +2894,13 @@ loop: for (;;) {
s = scope[v],
f;
- if (typeof s === 'function') {
+ if (typeof s === "function") {
// Protection against accidental inheritance.
s = undefined;
- } else if (typeof s === 'boolean') {
+ } else if (typeof s === "boolean") {
f = funct;
funct = functions[0];
- addlabel(v, 'var');
+ addlabel(v, "var");
s = funct;
funct = f;
}
@@ -2697,21 +2909,21 @@ loop: for (;;) {
if (funct === s) {
// Change 'unused' to 'var', and reject labels.
switch (funct[v]) {
- case 'unused':
- funct[v] = 'var';
+ case "unused":
+ funct[v] = "var";
break;
- case 'unction':
- funct[v] = 'function';
- this['function'] = true;
+ case "unction":
+ funct[v] = "function";
+ this["function"] = true;
break;
- case 'function':
- this['function'] = true;
+ case "function":
+ this["function"] = true;
break;
- case 'label':
+ case "label":
warning("'{a}' is a statement label.", token, v);
break;
}
- } else if (funct['(global)']) {
+ } else if (funct["(global)"]) {
// The name is not defined in the function. If we are in the global
// scope, then we have an undefined variable.
//
@@ -2719,32 +2931,33 @@ loop: for (;;) {
// the base object of a reference is null so no need to display warning
// if we're inside of typeof or delete.
- if (option.undef && typeof predefined[v] !== 'boolean') {
+ if (option.undef && typeof predefined[v] !== "boolean") {
// Attempting to subscript a null reference will throw an
// error, even within the typeof and delete operators
- if (!(anonname === 'typeof' || anonname === 'delete') ||
- (nexttoken && (nexttoken.value === '.' || nexttoken.value === '['))) {
+ if (!(anonname === "typeof" || anonname === "delete") ||
+ (nexttoken && (nexttoken.value === "." || nexttoken.value === "["))) {
isundef(funct, "'{a}' is not defined.", token, v);
}
}
+
note_implied(token);
} else {
// If the name is already defined in the current
// function, but not as outer, then there is a scope error.
switch (funct[v]) {
- case 'closure':
- case 'function':
- case 'var':
- case 'unused':
+ case "closure":
+ case "function":
+ case "var":
+ case "unused":
warning("'{a}' used out of scope.", token, v);
break;
- case 'label':
+ case "label":
warning("'{a}' is a statement label.", token, v);
break;
- case 'outer':
- case 'global':
+ case "outer":
+ case "global":
break;
default:
// If the name is defined in an outer function, make an outer entry,
@@ -2754,16 +2967,16 @@ loop: for (;;) {
} else if (s === null) {
warning("'{a}' is not allowed.", token, v);
note_implied(token);
- } else if (typeof s !== 'object') {
+ } else if (typeof s !== "object") {
// Operators typeof and delete do not raise runtime errors even
// if the base object of a reference is null so no need to
// display warning if we're inside of typeof or delete.
if (option.undef) {
// Attempting to subscript a null reference will throw an
// error, even within the typeof and delete operators
- if (!(anonname === 'typeof' || anonname === 'delete') ||
+ if (!(anonname === "typeof" || anonname === "delete") ||
(nexttoken &&
- (nexttoken.value === '.' || nexttoken.value === '['))) {
+ (nexttoken.value === "." || nexttoken.value === "["))) {
isundef(funct, "'{a}' is not defined.", token, v);
}
@@ -2772,22 +2985,21 @@ loop: for (;;) {
note_implied(token);
} else {
switch (s[v]) {
- case 'function':
- case 'unction':
- this['function'] = true;
- s[v] = 'closure';
- funct[v] = s['(global)'] ? 'global' : 'outer';
+ case "function":
+ case "unction":
+ this["function"] = true;
+ s[v] = "closure";
+ funct[v] = s["(global)"] ? "global" : "outer";
break;
- case 'var':
- case 'unused':
- s[v] = 'closure';
- funct[v] = s['(global)'] ? 'global' : 'outer';
+ case "var":
+ case "unused":
+ s[v] = "closure";
+ funct[v] = s["(global)"] ? "global" : "outer";
break;
- case 'closure':
- case 'parameter':
- funct[v] = s['(global)'] ? 'global' : 'outer';
+ case "closure":
+ funct[v] = s["(global)"] ? "global" : "outer";
break;
- case 'label':
+ case "label":
warning("'{a}' is a statement label.", token, v);
}
}
@@ -2801,123 +3013,122 @@ loop: for (;;) {
}
};
- type('(regexp)', function () {
+ type("(regexp)", function () {
return this;
});
// ECMAScript parser
- delim('(endline)');
- delim('(begin)');
- delim('(end)').reach = true;
- delim('').reach = true;
- delim('');
- delim('(error)').reach = true;
- delim('}').reach = true;
- delim(')');
- delim(']');
- delim('"').reach = true;
+ delim("(endline)");
+ delim("(begin)");
+ delim("(end)").reach = true;
+ delim("").reach = true;
+ delim("");
+ delim("(error)").reach = true;
+ delim("}").reach = true;
+ delim(")");
+ delim("]");
+ delim("\"").reach = true;
delim("'").reach = true;
- delim(';');
- delim(':').reach = true;
- delim(',');
- delim('#');
- delim('@');
- reserve('else');
- reserve('case').reach = true;
- reserve('catch');
- reserve('default').reach = true;
- reserve('finally');
- reservevar('arguments', function (x) {
- if (directive['use strict'] && funct['(global)']) {
+ delim(";");
+ delim(":").reach = true;
+ delim(",");
+ delim("#");
+ delim("@");
+ reserve("else");
+ reserve("case").reach = true;
+ reserve("catch");
+ reserve("default").reach = true;
+ reserve("finally");
+ reservevar("arguments", function (x) {
+ if (directive["use strict"] && funct["(global)"]) {
warning("Strict violation.", x);
}
});
- reservevar('eval');
- reservevar('false');
- reservevar('Infinity');
- reservevar('NaN');
- reservevar('null');
- reservevar('this', function (x) {
- if (directive['use strict'] && !option.validthis && ((funct['(statement)'] &&
- funct['(name)'].charAt(0) > 'Z') || funct['(global)'])) {
+ reservevar("eval");
+ reservevar("false");
+ reservevar("Infinity");
+ reservevar("null");
+ reservevar("this", function (x) {
+ if (directive["use strict"] && !option.validthis && ((funct["(statement)"] &&
+ funct["(name)"].charAt(0) > "Z") || funct["(global)"])) {
warning("Possible strict violation.", x);
}
});
- reservevar('true');
- reservevar('undefined');
- assignop('=', 'assign', 20);
- assignop('+=', 'assignadd', 20);
- assignop('-=', 'assignsub', 20);
- assignop('*=', 'assignmult', 20);
- assignop('/=', 'assigndiv', 20).nud = function () {
+ reservevar("true");
+ reservevar("undefined");
+ assignop("=", "assign", 20);
+ assignop("+=", "assignadd", 20);
+ assignop("-=", "assignsub", 20);
+ assignop("*=", "assignmult", 20);
+ assignop("/=", "assigndiv", 20).nud = function () {
error("A regular expression literal can be confused with '/='.");
};
- assignop('%=', 'assignmod', 20);
- bitwiseassignop('&=', 'assignbitand', 20);
- bitwiseassignop('|=', 'assignbitor', 20);
- bitwiseassignop('^=', 'assignbitxor', 20);
- bitwiseassignop('<<=', 'assignshiftleft', 20);
- bitwiseassignop('>>=', 'assignshiftright', 20);
- bitwiseassignop('>>>=', 'assignshiftrightunsigned', 20);
- infix('?', function (left, that) {
+ assignop("%=", "assignmod", 20);
+ bitwiseassignop("&=", "assignbitand", 20);
+ bitwiseassignop("|=", "assignbitor", 20);
+ bitwiseassignop("^=", "assignbitxor", 20);
+ bitwiseassignop("<<=", "assignshiftleft", 20);
+ bitwiseassignop(">>=", "assignshiftright", 20);
+ bitwiseassignop(">>>=", "assignshiftrightunsigned", 20);
+ infix("?", function (left, that) {
that.left = left;
that.right = expression(10);
- advance(':');
- that['else'] = expression(10);
+ advance(":");
+ that["else"] = expression(10);
return that;
}, 30);
- infix('||', 'or', 40);
- infix('&&', 'and', 50);
- bitwise('|', 'bitor', 70);
- bitwise('^', 'bitxor', 80);
- bitwise('&', 'bitand', 90);
- relation('==', function (left, right) {
- var eqnull = option.eqnull && (left.value === 'null' || right.value === 'null');
+ infix("||", "or", 40);
+ infix("&&", "and", 50);
+ bitwise("|", "bitor", 70);
+ bitwise("^", "bitxor", 80);
+ bitwise("&", "bitand", 90);
+ relation("==", function (left, right) {
+ var eqnull = option.eqnull && (left.value === "null" || right.value === "null");
if (!eqnull && option.eqeqeq)
- warning("Expected '{a}' and instead saw '{b}'.", this, '===', '==');
+ warning("Expected '{a}' and instead saw '{b}'.", this, "===", "==");
else if (isPoorRelation(left))
- warning("Use '{a}' to compare with '{b}'.", this, '===', left.value);
+ warning("Use '{a}' to compare with '{b}'.", this, "===", left.value);
else if (isPoorRelation(right))
- warning("Use '{a}' to compare with '{b}'.", this, '===', right.value);
+ warning("Use '{a}' to compare with '{b}'.", this, "===", right.value);
return this;
});
- relation('===');
- relation('!=', function (left, right) {
+ relation("===");
+ relation("!=", function (left, right) {
var eqnull = option.eqnull &&
- (left.value === 'null' || right.value === 'null');
+ (left.value === "null" || right.value === "null");
if (!eqnull && option.eqeqeq) {
warning("Expected '{a}' and instead saw '{b}'.",
- this, '!==', '!=');
+ this, "!==", "!=");
} else if (isPoorRelation(left)) {
warning("Use '{a}' to compare with '{b}'.",
- this, '!==', left.value);
+ this, "!==", left.value);
} else if (isPoorRelation(right)) {
warning("Use '{a}' to compare with '{b}'.",
- this, '!==', right.value);
+ this, "!==", right.value);
}
return this;
});
- relation('!==');
- relation('<');
- relation('>');
- relation('<=');
- relation('>=');
- bitwise('<<', 'shiftleft', 120);
- bitwise('>>', 'shiftright', 120);
- bitwise('>>>', 'shiftrightunsigned', 120);
- infix('in', 'in', 120);
- infix('instanceof', 'instanceof', 120);
- infix('+', function (left, that) {
+ relation("!==");
+ relation("<");
+ relation(">");
+ relation("<=");
+ relation(">=");
+ bitwise("<<", "shiftleft", 120);
+ bitwise(">>", "shiftright", 120);
+ bitwise(">>>", "shiftrightunsigned", 120);
+ infix("in", "in", 120);
+ infix("instanceof", "instanceof", 120);
+ infix("+", function (left, that) {
var right = expression(130);
- if (left && right && left.id === '(string)' && right.id === '(string)') {
+ if (left && right && left.id === "(string)" && right.id === "(string)") {
left.value += right.value;
left.character = right.character;
if (!option.scripturl && jx.test(left.value)) {
@@ -2929,102 +3140,102 @@ loop: for (;;) {
that.right = right;
return that;
}, 130);
- prefix('+', 'num');
- prefix('+++', function () {
+ prefix("+", "num");
+ prefix("+++", function () {
warning("Confusing pluses.");
this.right = expression(150);
- this.arity = 'unary';
+ this.arity = "unary";
return this;
});
- infix('+++', function (left) {
+ infix("+++", function (left) {
warning("Confusing pluses.");
this.left = left;
this.right = expression(130);
return this;
}, 130);
- infix('-', 'sub', 130);
- prefix('-', 'neg');
- prefix('---', function () {
+ infix("-", "sub", 130);
+ prefix("-", "neg");
+ prefix("---", function () {
warning("Confusing minuses.");
this.right = expression(150);
- this.arity = 'unary';
+ this.arity = "unary";
return this;
});
- infix('---', function (left) {
+ infix("---", function (left) {
warning("Confusing minuses.");
this.left = left;
this.right = expression(130);
return this;
}, 130);
- infix('*', 'mult', 140);
- infix('/', 'div', 140);
- infix('%', 'mod', 140);
+ infix("*", "mult", 140);
+ infix("/", "div", 140);
+ infix("%", "mod", 140);
- suffix('++', 'postinc');
- prefix('++', 'preinc');
- syntax['++'].exps = true;
+ suffix("++", "postinc");
+ prefix("++", "preinc");
+ syntax["++"].exps = true;
- suffix('--', 'postdec');
- prefix('--', 'predec');
- syntax['--'].exps = true;
- prefix('delete', function () {
+ suffix("--", "postdec");
+ prefix("--", "predec");
+ syntax["--"].exps = true;
+ prefix("delete", function () {
var p = expression(0);
- if (!p || (p.id !== '.' && p.id !== '[')) {
+ if (!p || (p.id !== "." && p.id !== "[")) {
warning("Variables should not be deleted.");
}
this.first = p;
return this;
}).exps = true;
- prefix('~', function () {
+ prefix("~", function () {
if (option.bitwise) {
- warning("Unexpected '{a}'.", this, '~');
+ warning("Unexpected '{a}'.", this, "~");
}
expression(150);
return this;
});
- prefix('!', function () {
+ prefix("!", function () {
this.right = expression(150);
- this.arity = 'unary';
+ this.arity = "unary";
if (bang[this.right.id] === true) {
- warning("Confusing use of '{a}'.", this, '!');
+ warning("Confusing use of '{a}'.", this, "!");
}
return this;
});
- prefix('typeof', 'typeof');
- prefix('new', function () {
+ prefix("typeof", "typeof");
+ prefix("new", function () {
var c = expression(155), i;
- if (c && c.id !== 'function') {
+ if (c && c.id !== "function") {
if (c.identifier) {
- c['new'] = true;
+ c["new"] = true;
switch (c.value) {
- case 'Number':
- case 'String':
- case 'Boolean':
- case 'Math':
- case 'JSON':
- warning("Do not use {a} as a constructor.", token, c.value);
+ case "Number":
+ case "String":
+ case "Boolean":
+ case "Math":
+ case "JSON":
+ warning("Do not use {a} as a constructor.", prevtoken, c.value);
break;
- case 'Function':
+ case "Function":
if (!option.evil) {
warning("The Function constructor is eval.");
}
break;
- case 'Date':
- case 'RegExp':
+ case "Date":
+ case "RegExp":
break;
default:
- if (c.id !== 'function') {
+ if (c.id !== "function") {
i = c.value.substr(0, 1);
- if (option.newcap && (i < 'A' || i > 'Z')) {
+ if (option.newcap && (i < "A" || i > "Z") && !is_own(global, c.value)) {
warning("A constructor name should start with an uppercase letter.",
token);
}
}
}
} else {
- if (c.id !== '.' && c.id !== '[' && c.id !== '(') {
+ if (c.id !== "." && c.id !== "[" && c.id !== "(") {
warning("Bad constructor.", token);
}
}
@@ -3033,46 +3244,47 @@ loop: for (;;) {
warning("Weird construction. Delete 'new'.", this);
}
adjacent(token, nexttoken);
- if (nexttoken.id !== '(' && !option.supernew) {
- warning("Missing '()' invoking a constructor.");
+ if (nexttoken.id !== "(" && !option.supernew) {
+ warning("Missing '()' invoking a constructor.",
+ token, token.value);
}
this.first = c;
return this;
});
- syntax['new'].exps = true;
+ syntax["new"].exps = true;
- prefix('void').exps = true;
+ prefix("void").exps = true;
- infix('.', function (left, that) {
+ infix(".", function (left, that) {
adjacent(prevtoken, token);
nobreak();
var m = identifier();
- if (typeof m === 'string') {
+ if (typeof m === "string") {
countMember(m);
}
that.left = left;
that.right = m;
- if (left && left.value === 'arguments' && (m === 'callee' || m === 'caller')) {
+ if (left && left.value === "arguments" && (m === "callee" || m === "caller")) {
if (option.noarg)
warning("Avoid arguments.{a}.", left, m);
- else if (directive['use strict'])
- error('Strict violation.');
- } else if (!option.evil && left && left.value === 'document' &&
- (m === 'write' || m === 'writeln')) {
+ else if (directive["use strict"])
+ error("Strict violation.");
+ } else if (!option.evil && left && left.value === "document" &&
+ (m === "write" || m === "writeln")) {
warning("document.write can be a form of eval.", left);
}
- if (!option.evil && (m === 'eval' || m === 'execScript')) {
- warning('eval is evil.');
+ if (!option.evil && (m === "eval" || m === "execScript")) {
+ warning("eval is evil.");
}
return that;
}, 160, true);
- infix('(', function (left, that) {
- if (prevtoken.id !== '}' && prevtoken.id !== ')') {
+ infix("(", function (left, that) {
+ if (prevtoken.id !== "}" && prevtoken.id !== ")") {
nobreak(prevtoken, token);
}
nospace();
- if (option.immed && !left.immed && left.id === 'function') {
+ if (option.immed && !left.immed && left.id === "function") {
warning("Wrap an immediate function invocation in parentheses " +
"to assist the reader in understanding that the expression " +
"is the result of a function, and not the function itself.");
@@ -3080,51 +3292,63 @@ loop: for (;;) {
var n = 0,
p = [];
if (left) {
- if (left.type === '(identifier)') {
+ if (left.type === "(identifier)") {
if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {
- if (left.value !== 'Number' && left.value !== 'String' &&
- left.value !== 'Boolean' &&
- left.value !== 'Date') {
- if (left.value === 'Math') {
+ if ("Number String Boolean Date Object".indexOf(left.value) === -1) {
+ if (left.value === "Math") {
warning("Math is not a function.", left);
} else if (option.newcap) {
- warning(
-"Missing 'new' prefix when invoking a constructor.", left);
+ warning("Missing 'new' prefix when invoking a constructor.", left);
}
}
}
}
}
- if (nexttoken.id !== ')') {
+ if (nexttoken.id !== ")") {
for (;;) {
p[p.length] = expression(10);
n += 1;
- if (nexttoken.id !== ',') {
+ if (nexttoken.id !== ",") {
break;
}
comma();
}
}
- advance(')');
+ advance(")");
nospace(prevtoken, token);
- if (typeof left === 'object') {
- if (left.value === 'parseInt' && n === 1) {
- warning("Missing radix parameter.", left);
+ if (typeof left === "object") {
+ if (left.value === "parseInt" && n === 1) {
+ warning("Missing radix parameter.", token);
}
if (!option.evil) {
- if (left.value === 'eval' || left.value === 'Function' ||
- left.value === 'execScript') {
+ if (left.value === "eval" || left.value === "Function" ||
+ left.value === "execScript") {
warning("eval is evil.", left);
- } else if (p[0] && p[0].id === '(string)' &&
- (left.value === 'setTimeout' ||
- left.value === 'setInterval')) {
+
+ if (p[0] && [0].id === "(string)") {
+ addInternalSrc(left, p[0].value);
+ }
+ } else if (p[0] && p[0].id === "(string)" &&
+ (left.value === "setTimeout" ||
+ left.value === "setInterval")) {
warning(
"Implied eval is evil. Pass a function instead of a string.", left);
+ addInternalSrc(left, p[0].value);
+
+ // window.setTimeout/setInterval
+ } else if (p[0] && p[0].id === "(string)" &&
+ left.value === "." &&
+ left.left.value === "window" &&
+ (left.right === "setTimeout" ||
+ left.right === "setInterval")) {
+ warning(
+ "Implied eval is evil. Pass a function instead of a string.", left);
+ addInternalSrc(left, p[0].value);
}
}
- if (!left.identifier && left.id !== '.' && left.id !== '[' &&
- left.id !== '(' && left.id !== '&&' && left.id !== '||' &&
- left.id !== '?') {
+ if (!left.identifier && left.id !== "." && left.id !== "[" &&
+ left.id !== "(" && left.id !== "&&" && left.id !== "||" &&
+ left.id !== "?") {
warning("Bad invocation.", left);
}
}
@@ -3132,34 +3356,32 @@ loop: for (;;) {
return that;
}, 155, true).exps = true;
- prefix('(', function () {
+ prefix("(", function () {
nospace();
- if (nexttoken.id === 'function') {
+ if (nexttoken.id === "function") {
nexttoken.immed = true;
}
var v = expression(0);
- advance(')', this);
+ advance(")", this);
nospace(prevtoken, token);
- if (option.immed && v.id === 'function') {
- if (nexttoken.id === '(' ||
- (nexttoken.id === '.' && (peek().value === 'call' || peek().value === 'apply'))) {
- warning(
-"Move the invocation into the parens that contain the function.", nexttoken);
- } else {
+ if (option.immed && v.id === "function") {
+ if (nexttoken.id !== "(" &&
+ (nexttoken.id !== "." || (peek().value !== "call" && peek().value !== "apply"))) {
warning(
"Do not wrap function literals in parens unless they are to be immediately invoked.",
this);
}
}
+
return v;
});
- infix('[', function (left, that) {
+ infix("[", function (left, that) {
nobreak(prevtoken, token);
nospace();
var e = expression(0), s;
- if (e && e.type === '(string)') {
- if (!option.evil && (e.value === 'eval' || e.value === 'execScript')) {
+ if (e && e.type === "(string)") {
+ if (!option.evil && (e.value === "eval" || e.value === "execScript")) {
warning("eval is evil.", that);
}
countMember(e.value);
@@ -3167,18 +3389,18 @@ loop: for (;;) {
s = syntax[e.value];
if (!s || !s.reserved) {
warning("['{a}'] is better written in dot notation.",
- e, e.value);
+ prevtoken, e.value);
}
}
}
- advance(']', that);
+ advance("]", that);
nospace(prevtoken, token);
that.left = left;
that.right = e;
return that;
}, 160, true);
- prefix('[', function () {
+ prefix("[", function () {
var b = token.line !== nexttoken.line;
this.first = [];
if (b) {
@@ -3187,21 +3409,21 @@ loop: for (;;) {
indent += option.indent;
}
}
- while (nexttoken.id !== '(end)') {
- while (nexttoken.id === ',') {
+ while (nexttoken.id !== "(end)") {
+ while (nexttoken.id === ",") {
warning("Extra comma.");
- advance(',');
+ advance(",");
}
- if (nexttoken.id === ']') {
+ if (nexttoken.id === "]") {
break;
}
if (b && token.line !== nexttoken.line) {
indentation();
}
this.first.push(expression(10));
- if (nexttoken.id === ',') {
+ if (nexttoken.id === ",") {
comma();
- if (nexttoken.id === ']' && !option.es5) {
+ if (nexttoken.id === "]" && !option.es5) {
warning("Extra comma.", token);
break;
}
@@ -3213,7 +3435,7 @@ loop: for (;;) {
indent -= option.indent;
indentation();
}
- advance(']', this);
+ advance("]", this);
return this;
}, 160);
@@ -3221,10 +3443,10 @@ loop: for (;;) {
function property_name() {
var id = optionalidentifier(true);
if (!id) {
- if (nexttoken.id === '(string)') {
+ if (nexttoken.id === "(string)") {
id = nexttoken.value;
advance();
- } else if (nexttoken.id === '(number)') {
+ } else if (nexttoken.id === "(number)") {
id = nexttoken.value.toString();
advance();
}
@@ -3234,23 +3456,28 @@ loop: for (;;) {
function functionparams() {
- var i, t = nexttoken, p = [];
- advance('(');
+ var next = nexttoken;
+ var params = [];
+ var ident;
+
+ advance("(");
nospace();
- if (nexttoken.id === ')') {
- advance(')');
+
+ if (nexttoken.id === ")") {
+ advance(")");
return;
}
+
for (;;) {
- i = identifier(true);
- p.push(i);
- addlabel(i, 'parameter');
- if (nexttoken.id === ',') {
+ ident = identifier(true);
+ params.push(ident);
+ addlabel(ident, "unused", token);
+ if (nexttoken.id === ",") {
comma();
} else {
- advance(')', t);
+ advance(")", next);
nospace(prevtoken, token);
- return p;
+ return params;
}
}
}
@@ -3265,34 +3492,88 @@ loop: for (;;) {
scope = Object.create(scope);
funct = {
- '(name)' : i || '"' + anonname + '"',
- '(line)' : nexttoken.line,
- '(context)' : funct,
- '(breakage)' : 0,
- '(loopage)' : 0,
- '(scope)' : scope,
- '(statement)': statement
+ "(name)" : i || "\"" + anonname + "\"",
+ "(line)" : nexttoken.line,
+ "(character)": nexttoken.character,
+ "(context)" : funct,
+ "(breakage)" : 0,
+ "(loopage)" : 0,
+ "(metrics)" : createMetrics(nexttoken),
+ "(scope)" : scope,
+ "(statement)": statement,
+ "(tokens)" : {}
};
f = funct;
token.funct = funct;
functions.push(funct);
if (i) {
- addlabel(i, 'function');
+ addlabel(i, "function");
}
- funct['(params)'] = functionparams();
+ funct["(params)"] = functionparams();
+ funct["(metrics)"].verifyMaxParametersPerFunction(funct["(params)"]);
block(false, false, true);
+
+ funct["(metrics)"].verifyMaxStatementsPerFunction();
+ funct["(metrics)"].verifyMaxComplexityPerFunction();
+
scope = oldScope;
option = oldOption;
- funct['(last)'] = token.line;
- funct = funct['(context)'];
+ funct["(last)"] = token.line;
+ funct["(lastcharacter)"] = token.character;
+ funct = funct["(context)"];
return f;
}
+ function createMetrics(functionStartToken) {
+ return {
+ statementCount: 0,
+ nestedBlockDepth: -1,
+ ComplexityCount: 1,
+ verifyMaxStatementsPerFunction: function () {
+ if (option.maxstatements &&
+ this.statementCount > option.maxstatements) {
+ var message = "Too many statements per function (" + this.statementCount + ").";
+ warning(message, functionStartToken);
+ }
+ },
+
+ verifyMaxParametersPerFunction: function (parameters) {
+ if (option.maxparams &&
+ parameters.length > option.maxparams) {
+ var message = "Too many parameters per function (" + parameters.length + ").";
+ warning(message, functionStartToken);
+ }
+ },
+
+ verifyMaxNestedBlockDepthPerFunction: function () {
+ if (option.maxdepth &&
+ this.nestedBlockDepth > 0 &&
+ this.nestedBlockDepth === option.maxdepth + 1) {
+ var message = "Blocks are nested too deeply (" + this.nestedBlockDepth + ").";
+ warning(message);
+ }
+ },
+
+ verifyMaxComplexityPerFunction: function () {
+ var max = option.maxcomplexity;
+ var cc = this.ComplexityCount;
+ if (max && cc > max) {
+ var message = "Cyclomatic complexity is too high per function (" + cc + ").";
+ warning(message, functionStartToken);
+ }
+ }
+ };
+ }
+
+ function increaseComplexityCount() {
+ funct["(metrics)"].ComplexityCount += 1;
+ }
+
(function (x) {
x.nud = function () {
- var b, f, i, j, p, t;
+ var b, f, i, p, t;
var props = {}; // All properties, including accessors
function saveProperty(name, token) {
@@ -3337,14 +3618,14 @@ loop: for (;;) {
}
}
for (;;) {
- if (nexttoken.id === '}') {
+ if (nexttoken.id === "}") {
break;
}
if (b) {
indentation();
}
- if (nexttoken.value === 'get' && peek().id !== ':') {
- advance('get');
+ if (nexttoken.value === "get" && peek().id !== ":") {
+ advance("get");
if (!option.es5) {
error("get/set are ES5 features.");
}
@@ -3356,13 +3637,13 @@ loop: for (;;) {
t = nexttoken;
adjacent(token, nexttoken);
f = doFunction();
- p = f['(params)'];
+ p = f["(params)"];
if (p) {
warning("Unexpected parameter '{a}' in get {b} function.", t, p[0], i);
}
adjacent(token, nexttoken);
- } else if (nexttoken.value === 'set' && peek().id !== ':') {
- advance('set');
+ } else if (nexttoken.value === "set" && peek().id !== ":") {
+ advance("set");
if (!option.es5) {
error("get/set are ES5 features.");
}
@@ -3374,27 +3655,27 @@ loop: for (;;) {
t = nexttoken;
adjacent(token, nexttoken);
f = doFunction();
- p = f['(params)'];
+ p = f["(params)"];
if (!p || p.length !== 1) {
warning("Expected a single parameter in set {a} function.", t, i);
}
} else {
i = property_name();
saveProperty(i, nexttoken);
- if (typeof i !== 'string') {
+ if (typeof i !== "string") {
break;
}
- advance(':');
+ advance(":");
nonadjacent(token, nexttoken);
expression(10);
}
countMember(i);
- if (nexttoken.id === ',') {
+ if (nexttoken.id === ",") {
comma();
- if (nexttoken.id === ',') {
+ if (nexttoken.id === ",") {
warning("Extra comma.", token);
- } else if (nexttoken.id === '}' && !option.es5) {
+ } else if (nexttoken.id === "}" && !option.es5) {
warning("Extra comma.", token);
}
} else {
@@ -3405,7 +3686,7 @@ loop: for (;;) {
indent -= option.indent;
indentation();
}
- advance('}', this);
+ advance("}", this);
// Check for lonely setters if in the ES5 mode.
if (option.es5) {
@@ -3420,13 +3701,13 @@ loop: for (;;) {
x.fud = function () {
error("Expected to see a statement and instead saw a block.", token);
};
- }(delim('{')));
+ }(delim("{")));
// This Function is called when esnext option is set to true
// it adds the `const` statement to JSHINT
useESNextSyntax = function () {
- var conststatement = stmt('const', function (prefix) {
+ var conststatement = stmt("const", function (prefix) {
var id, name, value;
this.first = [];
@@ -3436,10 +3717,10 @@ loop: for (;;) {
if (funct[id] === "const") {
warning("const '" + id + "' has already been declared");
}
- if (funct['(global)'] && predefined[id] === false) {
+ if (funct["(global)"] && predefined[id] === false) {
warning("Redefinition of '{a}'.", token, id);
}
- addlabel(id, 'const');
+ addlabel(id, "const");
if (prefix) {
break;
}
@@ -3451,15 +3732,15 @@ loop: for (;;) {
"'{a}' is initialized to 'undefined'.", token, id);
}
- if (nexttoken.id === '=') {
+ if (nexttoken.id === "=") {
nonadjacent(token, nexttoken);
- advance('=');
+ advance("=");
nonadjacent(token, nexttoken);
- if (nexttoken.id === 'undefined') {
+ if (nexttoken.id === "undefined") {
warning("It is not necessary to initialize " +
"'{a}' to 'undefined'.", token, id);
}
- if (peek(0).id === '=' && nexttoken.identifier) {
+ if (peek(0).id === "=" && nexttoken.identifier) {
error("Constant {a} was not declared correctly.",
nexttoken, nexttoken.value);
}
@@ -3467,7 +3748,7 @@ loop: for (;;) {
name.first = value;
}
- if (nexttoken.id !== ',') {
+ if (nexttoken.id !== ",") {
break;
}
comma();
@@ -3477,47 +3758,55 @@ loop: for (;;) {
conststatement.exps = true;
};
- var varstatement = stmt('var', function (prefix) {
+ var varstatement = stmt("var", function (prefix) {
// JavaScript does not have block scope. It only has function scope. So,
// declaring a variable in a block can have unexpected consequences.
var id, name, value;
- if (funct['(onevar)'] && option.onevar) {
+ if (funct["(onevar)"] && option.onevar) {
warning("Too many var statements.");
- } else if (!funct['(global)']) {
- funct['(onevar)'] = true;
+ } else if (!funct["(global)"]) {
+ funct["(onevar)"] = true;
}
+
this.first = [];
+
for (;;) {
nonadjacent(token, nexttoken);
id = identifier();
+
if (option.esnext && funct[id] === "const") {
warning("const '" + id + "' has already been declared");
}
- if (funct['(global)'] && predefined[id] === false) {
+
+ if (funct["(global)"] && predefined[id] === false) {
warning("Redefinition of '{a}'.", token, id);
}
- addlabel(id, 'unused');
+
+ addlabel(id, "unused", token);
+
if (prefix) {
break;
}
+
name = token;
this.first.push(token);
- if (nexttoken.id === '=') {
+
+ if (nexttoken.id === "=") {
nonadjacent(token, nexttoken);
- advance('=');
+ advance("=");
nonadjacent(token, nexttoken);
- if (nexttoken.id === 'undefined') {
+ if (nexttoken.id === "undefined") {
warning("It is not necessary to initialize '{a}' to 'undefined'.", token, id);
}
- if (peek(0).id === '=' && nexttoken.identifier) {
+ if (peek(0).id === "=" && nexttoken.identifier) {
error("Variable {a} was not declared correctly.",
nexttoken, nexttoken.value);
}
value = expression(0);
name.first = value;
}
- if (nexttoken.id !== ',') {
+ if (nexttoken.id !== ",") {
break;
}
comma();
@@ -3526,7 +3815,7 @@ loop: for (;;) {
});
varstatement.exps = true;
- blockstmt('function', function () {
+ blockstmt("function", function () {
if (inblock) {
warning("Function declarations should not be placed in blocks. " +
"Use a function expression or move the statement to the top of " +
@@ -3538,16 +3827,17 @@ loop: for (;;) {
warning("const '" + i + "' has already been declared");
}
adjacent(token, nexttoken);
- addlabel(i, 'unction');
+ addlabel(i, "unction", token);
+
doFunction(i, true);
- if (nexttoken.id === '(' && nexttoken.line === token.line) {
+ if (nexttoken.id === "(" && nexttoken.line === token.line) {
error(
"Function declarations are not invocable. Wrap the whole function invocation in parens.");
}
return this;
});
- prefix('function', function () {
+ prefix("function", function () {
var i = optionalidentifier();
if (i) {
adjacent(token, nexttoken);
@@ -3555,31 +3845,32 @@ loop: for (;;) {
nonadjacent(token, nexttoken);
}
doFunction(i);
- if (!option.loopfunc && funct['(loopage)']) {
+ if (!option.loopfunc && funct["(loopage)"]) {
warning("Don't make functions within a loop.");
}
return this;
});
- blockstmt('if', function () {
+ blockstmt("if", function () {
var t = nexttoken;
- advance('(');
+ increaseComplexityCount();
+ advance("(");
nonadjacent(this, t);
nospace();
expression(20);
- if (nexttoken.id === '=') {
+ if (nexttoken.id === "=") {
if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
+ warning("Assignment in conditional expression");
+ advance("=");
expression(20);
}
- advance(')', t);
+ advance(")", t);
nospace(prevtoken, token);
block(true, true);
- if (nexttoken.id === 'else') {
+ if (nexttoken.id === "else") {
nonadjacent(token, nexttoken);
- advance('else');
- if (nexttoken.id === 'if' || nexttoken.id === 'switch') {
+ advance("else");
+ if (nexttoken.id === "if" || nexttoken.id === "switch") {
statement(true);
} else {
block(true, true);
@@ -3588,107 +3879,109 @@ loop: for (;;) {
return this;
});
- blockstmt('try', function () {
+ blockstmt("try", function () {
var b, e, s;
block(false);
- if (nexttoken.id === 'catch') {
- advance('catch');
+ if (nexttoken.id === "catch") {
+ increaseComplexityCount();
+ advance("catch");
nonadjacent(token, nexttoken);
- advance('(');
+ advance("(");
s = scope;
scope = Object.create(s);
e = nexttoken.value;
- if (nexttoken.type !== '(identifier)') {
+ if (nexttoken.type !== "(identifier)") {
warning("Expected an identifier and instead saw '{a}'.",
nexttoken, e);
} else {
- addlabel(e, 'exception');
+ addlabel(e, "exception");
}
advance();
- advance(')');
+ advance(")");
block(false);
b = true;
scope = s;
}
- if (nexttoken.id === 'finally') {
- advance('finally');
+ if (nexttoken.id === "finally") {
+ advance("finally");
block(false);
return;
} else if (!b) {
error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, 'catch', nexttoken.value);
+ nexttoken, "catch", nexttoken.value);
}
return this;
});
- blockstmt('while', function () {
+ blockstmt("while", function () {
var t = nexttoken;
- funct['(breakage)'] += 1;
- funct['(loopage)'] += 1;
- advance('(');
+ funct["(breakage)"] += 1;
+ funct["(loopage)"] += 1;
+ increaseComplexityCount();
+ advance("(");
nonadjacent(this, t);
nospace();
expression(20);
- if (nexttoken.id === '=') {
+ if (nexttoken.id === "=") {
if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
+ warning("Assignment in conditional expression");
+ advance("=");
expression(20);
}
- advance(')', t);
+ advance(")", t);
nospace(prevtoken, token);
block(true, true);
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
return this;
}).labelled = true;
- blockstmt('with', function () {
+ blockstmt("with", function () {
var t = nexttoken;
- if (directive['use strict']) {
+ if (directive["use strict"]) {
error("'with' is not allowed in strict mode.", token);
} else if (!option.withstmt) {
warning("Don't use 'with'.", token);
}
- advance('(');
+ advance("(");
nonadjacent(this, t);
nospace();
expression(0);
- advance(')', t);
+ advance(")", t);
nospace(prevtoken, token);
block(true, true);
return this;
});
- blockstmt('switch', function () {
+ blockstmt("switch", function () {
var t = nexttoken,
g = false;
- funct['(breakage)'] += 1;
- advance('(');
+ funct["(breakage)"] += 1;
+ advance("(");
nonadjacent(this, t);
nospace();
this.condition = expression(20);
- advance(')', t);
+ advance(")", t);
nospace(prevtoken, token);
nonadjacent(token, nexttoken);
t = nexttoken;
- advance('{');
+ advance("{");
nonadjacent(token, nexttoken);
indent += option.indent;
this.cases = [];
for (;;) {
switch (nexttoken.id) {
- case 'case':
- switch (funct['(verb)']) {
- case 'break':
- case 'case':
- case 'continue':
- case 'return':
- case 'switch':
- case 'throw':
+ case "case":
+ switch (funct["(verb)"]) {
+ case "break":
+ case "case":
+ case "continue":
+ case "return":
+ case "switch":
+ case "throw":
break;
default:
// You can tell JSHint that you don't use break intentionally by
@@ -3701,18 +3994,19 @@ loop: for (;;) {
}
}
indentation(-option.indent);
- advance('case');
+ advance("case");
this.cases.push(expression(20));
+ increaseComplexityCount();
g = true;
- advance(':');
- funct['(verb)'] = 'case';
+ advance(":");
+ funct["(verb)"] = "case";
break;
- case 'default':
- switch (funct['(verb)']) {
- case 'break':
- case 'continue':
- case 'return':
- case 'throw':
+ case "default":
+ switch (funct["(verb)"]) {
+ case "break":
+ case "continue":
+ case "return":
+ case "throw":
break;
default:
if (!ft.test(lines[nexttoken.line - 2])) {
@@ -3722,32 +4016,32 @@ loop: for (;;) {
}
}
indentation(-option.indent);
- advance('default');
+ advance("default");
g = true;
- advance(':');
+ advance(":");
break;
- case '}':
+ case "}":
indent -= option.indent;
indentation();
- advance('}', t);
- if (this.cases.length === 1 || this.condition.id === 'true' ||
- this.condition.id === 'false') {
+ advance("}", t);
+ if (this.cases.length === 1 || this.condition.id === "true" ||
+ this.condition.id === "false") {
if (!option.onecase)
warning("This 'switch' should be an 'if'.", this);
}
- funct['(breakage)'] -= 1;
- funct['(verb)'] = undefined;
+ funct["(breakage)"] -= 1;
+ funct["(verb)"] = undefined;
return;
- case '(end)':
- error("Missing '{a}'.", nexttoken, '}');
+ case "(end)":
+ error("Missing '{a}'.", nexttoken, "}");
return;
default:
if (g) {
switch (token.id) {
- case ',':
+ case ",":
error("Each value should have its own case label.");
return;
- case ':':
+ case ":":
g = false;
statements();
break;
@@ -3756,13 +4050,13 @@ loop: for (;;) {
return;
}
} else {
- if (token.id === ':') {
- advance(':');
- error("Unexpected '{a}'.", token, ':');
+ if (token.id === ":") {
+ advance(":");
+ error("Unexpected '{a}'.", token, ":");
statements();
} else {
error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, 'case', nexttoken.value);
+ nexttoken, "case", nexttoken.value);
return;
}
}
@@ -3770,7 +4064,7 @@ loop: for (;;) {
}
}).labelled = true;
- stmt('debugger', function () {
+ stmt("debugger", function () {
if (!option.debug) {
warning("All 'debugger' statements should be removed.");
}
@@ -3778,49 +4072,52 @@ loop: for (;;) {
}).exps = true;
(function () {
- var x = stmt('do', function () {
- funct['(breakage)'] += 1;
- funct['(loopage)'] += 1;
+ var x = stmt("do", function () {
+ funct["(breakage)"] += 1;
+ funct["(loopage)"] += 1;
+ increaseComplexityCount();
+
this.first = block(true);
- advance('while');
+ advance("while");
var t = nexttoken;
nonadjacent(token, t);
- advance('(');
+ advance("(");
nospace();
expression(20);
- if (nexttoken.id === '=') {
+ if (nexttoken.id === "=") {
if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
+ warning("Assignment in conditional expression");
+ advance("=");
expression(20);
}
- advance(')', t);
+ advance(")", t);
nospace(prevtoken, token);
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
return this;
});
x.labelled = true;
x.exps = true;
}());
- blockstmt('for', function () {
+ blockstmt("for", function () {
var s, t = nexttoken;
- funct['(breakage)'] += 1;
- funct['(loopage)'] += 1;
- advance('(');
+ funct["(breakage)"] += 1;
+ funct["(loopage)"] += 1;
+ increaseComplexityCount();
+ advance("(");
nonadjacent(this, t);
nospace();
- if (peek(nexttoken.id === 'var' ? 1 : 0).id === 'in') {
- if (nexttoken.id === 'var') {
- advance('var');
+ if (peek(nexttoken.id === "var" ? 1 : 0).id === "in") {
+ if (nexttoken.id === "var") {
+ advance("var");
varstatement.fud.call(varstatement, true);
} else {
switch (funct[nexttoken.value]) {
- case 'unused':
- funct[nexttoken.value] = 'var';
+ case "unused":
+ funct[nexttoken.value] = "var";
break;
- case 'var':
+ case "var":
break;
default:
warning("Bad for in variable '{a}'.",
@@ -3828,27 +4125,27 @@ loop: for (;;) {
}
advance();
}
- advance('in');
+ advance("in");
expression(20);
- advance(')', t);
+ advance(")", t);
s = block(true, true);
- if (option.forin && s && (s.length > 1 || typeof s[0] !== 'object' ||
- s[0].value !== 'if')) {
+ if (option.forin && s && (s.length > 1 || typeof s[0] !== "object" ||
+ s[0].value !== "if")) {
warning("The body of a for in should be wrapped in an if statement to filter " +
"unwanted properties from the prototype.", this);
}
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
return this;
} else {
- if (nexttoken.id !== ';') {
- if (nexttoken.id === 'var') {
- advance('var');
+ if (nexttoken.id !== ";") {
+ if (nexttoken.id === "var") {
+ advance("var");
varstatement.fud.call(varstatement);
} else {
for (;;) {
- expression(0, 'for');
- if (nexttoken.id !== ',') {
+ expression(0, "for");
+ if (nexttoken.id !== ",") {
break;
}
comma();
@@ -3856,53 +4153,53 @@ loop: for (;;) {
}
}
nolinebreak(token);
- advance(';');
- if (nexttoken.id !== ';') {
+ advance(";");
+ if (nexttoken.id !== ";") {
expression(20);
- if (nexttoken.id === '=') {
+ if (nexttoken.id === "=") {
if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
+ warning("Assignment in conditional expression");
+ advance("=");
expression(20);
}
}
nolinebreak(token);
- advance(';');
- if (nexttoken.id === ';') {
+ advance(";");
+ if (nexttoken.id === ";") {
error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, ')', ';');
+ nexttoken, ")", ";");
}
- if (nexttoken.id !== ')') {
+ if (nexttoken.id !== ")") {
for (;;) {
- expression(0, 'for');
- if (nexttoken.id !== ',') {
+ expression(0, "for");
+ if (nexttoken.id !== ",") {
break;
}
comma();
}
}
- advance(')', t);
+ advance(")", t);
nospace(prevtoken, token);
block(true, true);
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
+ funct["(breakage)"] -= 1;
+ funct["(loopage)"] -= 1;
return this;
}
}).labelled = true;
- stmt('break', function () {
+ stmt("break", function () {
var v = nexttoken.value;
- if (funct['(breakage)'] === 0)
+ if (funct["(breakage)"] === 0)
warning("Unexpected '{a}'.", nexttoken, this.value);
if (!option.asi)
nolinebreak(this);
- if (nexttoken.id !== ';') {
+ if (nexttoken.id !== ";") {
if (token.line === nexttoken.line) {
- if (funct[v] !== 'label') {
+ if (funct[v] !== "label") {
warning("'{a}' is not a statement label.", nexttoken, v);
} else if (scope[v] !== funct) {
warning("'{a}' is out of scope.", nexttoken, v);
@@ -3911,23 +4208,23 @@ loop: for (;;) {
advance();
}
}
- reachable('break');
+ reachable("break");
return this;
}).exps = true;
- stmt('continue', function () {
+ stmt("continue", function () {
var v = nexttoken.value;
- if (funct['(breakage)'] === 0)
+ if (funct["(breakage)"] === 0)
warning("Unexpected '{a}'.", nexttoken, this.value);
if (!option.asi)
nolinebreak(this);
- if (nexttoken.id !== ';') {
+ if (nexttoken.id !== ";") {
if (token.line === nexttoken.line) {
- if (funct[v] !== 'label') {
+ if (funct[v] !== "label") {
warning("'{a}' is not a statement label.", nexttoken, v);
} else if (scope[v] !== funct) {
warning("'{a}' is out of scope.", nexttoken, v);
@@ -3935,20 +4232,20 @@ loop: for (;;) {
this.first = nexttoken;
advance();
}
- } else if (!funct['(loopage)']) {
+ } else if (!funct["(loopage)"]) {
warning("Unexpected '{a}'.", nexttoken, this.value);
}
- reachable('continue');
+ reachable("continue");
return this;
}).exps = true;
- stmt('return', function () {
+ stmt("return", function () {
if (this.line === nexttoken.line) {
- if (nexttoken.id === '(regexp)')
+ if (nexttoken.id === "(regexp)")
warning("Wrap the /regexp/ literal in parens to disambiguate the slash operator.");
- if (nexttoken.id !== ';' && !nexttoken.reach) {
+ if (nexttoken.id !== ";" && !nexttoken.reach) {
nonadjacent(token, nexttoken);
if (peek().value === "=" && !option.boss) {
warningAt("Did you mean to return a conditional instead of an assignment?",
@@ -3959,38 +4256,38 @@ loop: for (;;) {
} else if (!option.asi) {
nolinebreak(this); // always warn (Line breaking error)
}
- reachable('return');
+ reachable("return");
return this;
}).exps = true;
- stmt('throw', function () {
+ stmt("throw", function () {
nolinebreak(this);
nonadjacent(token, nexttoken);
this.first = expression(20);
- reachable('throw');
+ reachable("throw");
return this;
}).exps = true;
// Superfluous reserved words
- reserve('class');
- reserve('const');
- reserve('enum');
- reserve('export');
- reserve('extends');
- reserve('import');
- reserve('super');
+ reserve("class");
+ reserve("const");
+ reserve("enum");
+ reserve("export");
+ reserve("extends");
+ reserve("import");
+ reserve("super");
- reserve('let');
- reserve('yield');
- reserve('implements');
- reserve('interface');
- reserve('package');
- reserve('private');
- reserve('protected');
- reserve('public');
- reserve('static');
+ reserve("let");
+ reserve("yield");
+ reserve("implements");
+ reserve("interface");
+ reserve("package");
+ reserve("private");
+ reserve("protected");
+ reserve("public");
+ reserve("static");
// Parse JSON
@@ -3999,26 +4296,26 @@ loop: for (;;) {
function jsonObject() {
var o = {}, t = nexttoken;
- advance('{');
- if (nexttoken.id !== '}') {
+ advance("{");
+ if (nexttoken.id !== "}") {
for (;;) {
- if (nexttoken.id === '(end)') {
+ if (nexttoken.id === "(end)") {
error("Missing '}' to match '{' from line {a}.",
nexttoken, t.line);
- } else if (nexttoken.id === '}') {
+ } else if (nexttoken.id === "}") {
warning("Unexpected comma.", token);
break;
- } else if (nexttoken.id === ',') {
+ } else if (nexttoken.id === ",") {
error("Unexpected comma.", nexttoken);
- } else if (nexttoken.id !== '(string)') {
+ } else if (nexttoken.id !== "(string)") {
warning("Expected a string and instead saw {a}.",
nexttoken, nexttoken.value);
}
if (o[nexttoken.value] === true) {
warning("Duplicate key '{a}'.",
nexttoken, nexttoken.value);
- } else if ((nexttoken.value === '__proto__' &&
- !option.proto) || (nexttoken.value === '__iterator__' &&
+ } else if ((nexttoken.value === "__proto__" &&
+ !option.proto) || (nexttoken.value === "__iterator__" &&
!option.iterator)) {
warning("The '{a}' key may produce unexpected results.",
nexttoken, nexttoken.value);
@@ -4026,62 +4323,62 @@ loop: for (;;) {
o[nexttoken.value] = true;
}
advance();
- advance(':');
+ advance(":");
jsonValue();
- if (nexttoken.id !== ',') {
+ if (nexttoken.id !== ",") {
break;
}
- advance(',');
+ advance(",");
}
}
- advance('}');
+ advance("}");
}
function jsonArray() {
var t = nexttoken;
- advance('[');
- if (nexttoken.id !== ']') {
+ advance("[");
+ if (nexttoken.id !== "]") {
for (;;) {
- if (nexttoken.id === '(end)') {
+ if (nexttoken.id === "(end)") {
error("Missing ']' to match '[' from line {a}.",
nexttoken, t.line);
- } else if (nexttoken.id === ']') {
+ } else if (nexttoken.id === "]") {
warning("Unexpected comma.", token);
break;
- } else if (nexttoken.id === ',') {
+ } else if (nexttoken.id === ",") {
error("Unexpected comma.", nexttoken);
}
jsonValue();
- if (nexttoken.id !== ',') {
+ if (nexttoken.id !== ",") {
break;
}
- advance(',');
+ advance(",");
}
}
- advance(']');
+ advance("]");
}
switch (nexttoken.id) {
- case '{':
+ case "{":
jsonObject();
break;
- case '[':
+ case "[":
jsonArray();
break;
- case 'true':
- case 'false':
- case 'null':
- case '(number)':
- case '(string)':
+ case "true":
+ case "false":
+ case "null":
+ case "(number)":
+ case "(string)":
advance();
break;
- case '-':
- advance('-');
+ case "-":
+ advance("-");
if (token.character !== nexttoken.from) {
warning("Unexpected space after '-'.", token);
}
adjacent(token, nexttoken);
- advance('(number)');
+ advance("(number)");
break;
default:
error("Expected a JSON value.", nexttoken);
@@ -4089,48 +4386,71 @@ loop: for (;;) {
}
-// The actual JSHINT function itself.
-
+ // The actual JSHINT function itself.
var itself = function (s, o, g) {
- var a, i, k;
- JSHINT.errors = [];
- JSHINT.undefs = [];
+ var a, i, k, x;
+ var optionKeys;
+ var newOptionObj = {};
+
+ if (o && o.scope) {
+ JSHINT.scope = o.scope;
+ } else {
+ JSHINT.errors = [];
+ JSHINT.undefs = [];
+ JSHINT.internals = [];
+ JSHINT.blacklist = {};
+ JSHINT.scope = "(main)";
+ }
+
predefined = Object.create(standard);
+ declared = Object.create(null);
combine(predefined, g || {});
+
if (o) {
a = o.predef;
if (a) {
- if (Array.isArray(a)) {
- for (i = 0; i < a.length; i += 1) {
- predefined[a[i]] = true;
- }
- } else if (typeof a === 'object') {
- k = Object.keys(a);
- for (i = 0; i < k.length; i += 1) {
- predefined[k[i]] = !!a[k[i]];
- }
+ if (!Array.isArray(a) && typeof a === "object") {
+ a = Object.keys(a);
}
+ a.forEach(function (item) {
+ var slice;
+ if (item[0] === "-") {
+ slice = item.slice(1);
+ JSHINT.blacklist[slice] = slice;
+ } else {
+ predefined[item] = true;
+ }
+ });
+ }
+ optionKeys = Object.keys(o);
+ for (x = 0; x < optionKeys.length; x++) {
+ newOptionObj[optionKeys[x]] = o[optionKeys[x]];
+
+ if (optionKeys[x] === "newcap" && o[optionKeys[x]] === false)
+ newOptionObj["(explicitNewcap)"] = true;
}
- option = o;
- } else {
- option = {};
}
+
+ option = newOptionObj;
+
option.indent = option.indent || 4;
option.maxerr = option.maxerr || 50;
- tab = '';
+ tab = "";
for (i = 0; i < option.indent; i += 1) {
- tab += ' ';
+ tab += " ";
}
indent = 1;
global = Object.create(predefined);
scope = global;
funct = {
- '(global)': true,
- '(name)': '(global)',
- '(scope)': scope,
- '(breakage)': 0,
- '(loopage)': 0
+ "(global)": true,
+ "(name)": "(global)",
+ "(scope)": scope,
+ "(breakage)": 0,
+ "(loopage)": 0,
+ "(tokens)": {},
+ "(metrics)": createMetrics(nexttoken)
};
functions = [funct];
urls = [];
@@ -4142,11 +4462,30 @@ loop: for (;;) {
lookahead = [];
jsonmode = false;
warnings = 0;
+ lines = [];
+ unuseds = [];
+
+ if (!isString(s) && !Array.isArray(s)) {
+ errorAt("Input is neither a string nor an array of strings.", 0);
+ return false;
+ }
+
+ if (isString(s) && /^\s*$/g.test(s)) {
+ errorAt("Input is an empty string.", 0);
+ return false;
+ }
+
+ if (s.length === 0) {
+ errorAt("Input is an empty array.", 0);
+ return false;
+ }
+
lex.init(s);
+
prereg = true;
directive = {};
- prevtoken = token = nexttoken = syntax['(begin)'];
+ prevtoken = token = nexttoken = syntax["(begin)"];
// Check options
for (var name in o) {
@@ -4162,12 +4501,13 @@ loop: for (;;) {
//reset values
comma.first = true;
+ quotmark = undefined;
try {
advance();
switch (nexttoken.id) {
- case '{':
- case '[':
+ case "{":
+ case "[":
option.laxbreak = true;
jsonmode = true;
jsonValue();
@@ -4180,26 +4520,26 @@ loop: for (;;) {
statements();
}
- advance('(end)');
+ advance((nexttoken && nexttoken.value !== ".") ? "(end)" : undefined);
var markDefined = function (name, context) {
do {
- if (typeof context[name] === 'string') {
+ if (typeof context[name] === "string") {
// JSHINT marks unused variables as 'unused' and
// unused function declaration as 'unction'. This
// code changes such instances back 'var' and
// 'closure' so that the code in JSHINT.data()
// doesn't think they're unused.
- if (context[name] === 'unused')
- context[name] = 'var';
- else if (context[name] === 'unction')
- context[name] = 'closure';
+ if (context[name] === "unused")
+ context[name] = "var";
+ else if (context[name] === "unction")
+ context[name] = "closure";
return true;
}
- context = context['(context)'];
+ context = context["(context)"];
} while (context);
return false;
@@ -4221,6 +4561,37 @@ loop: for (;;) {
implied[name] = newImplied;
};
+ var warnUnused = function (name, token) {
+ var line = token.line;
+ var chr = token.character;
+
+ if (option.unused)
+ warningAt("'{a}' is defined but never used.", line, chr, name);
+
+ unuseds.push({
+ name: name,
+ line: line,
+ character: chr
+ });
+ };
+
+ var checkUnused = function (func, key) {
+ var type = func[key];
+ var token = func["(tokens)"][key];
+
+ if (key.charAt(0) === "(")
+ return;
+
+ if (type !== "unused" && type !== "unction")
+ return;
+
+ // Params are checked separately from other variables.
+ if (func["(params)"] && func["(params)"].indexOf(key) !== -1)
+ return;
+
+ warnUnused(key, token);
+ };
+
// Check queued 'x is not defined' instances to see if they're still undefined.
for (i = 0; i < JSHINT.undefs.length; i += 1) {
k = JSHINT.undefs[i].slice(0);
@@ -4231,6 +4602,43 @@ loop: for (;;) {
warning.apply(warning, k.slice(1));
}
}
+
+ functions.forEach(function (func) {
+ for (var key in func) {
+ if (is_own(func, key)) {
+ checkUnused(func, key);
+ }
+ }
+
+ if (!func["(params)"])
+ return;
+
+ var params = func["(params)"].slice();
+ var param = params.pop();
+ var type;
+
+ while (param) {
+ type = func[param];
+
+ // 'undefined' is a special case for (function (window, undefined) { ... })();
+ // patterns.
+
+ if (param === "undefined")
+ return;
+
+ if (type !== "unused" && type !== "unction")
+ return;
+
+ warnUnused(param, func["(tokens)"][param]);
+ param = params.pop();
+ }
+ });
+
+ for (var key in declared) {
+ if (is_own(declared, key) && !is_own(global, key)) {
+ warnUnused(key, declared[key]);
+ }
+ }
} catch (e) {
if (e) {
var nt = nexttoken || {};
@@ -4243,14 +4651,31 @@ loop: for (;;) {
}
}
+ // Loop over the listed "internals", and check them as well.
+
+ if (JSHINT.scope === "(main)") {
+ o = o || {};
+
+ for (i = 0; i < JSHINT.internals.length; i += 1) {
+ k = JSHINT.internals[i];
+ o.scope = k.elem;
+ itself(k.value, o, g);
+ }
+ }
+
return JSHINT.errors.length === 0;
};
// Data summary.
itself.data = function () {
+ var data = {
+ functions: [],
+ options: option
+ };
+ var implieds = [];
+ var members = [];
+ var fu, f, i, j, n, globals;
- var data = { functions: [], options: option }, fu, globals, implieds = [], f, i, j,
- members = [], n, unused = [], v;
if (itself.errors.length) {
data.errors = itself.errors;
}
@@ -4267,6 +4692,7 @@ loop: for (;;) {
});
}
}
+
if (implieds.length > 0) {
data.implieds = implieds;
}
@@ -4279,49 +4705,37 @@ loop: for (;;) {
if (globals.length > 0) {
data.globals = globals;
}
+
for (i = 1; i < functions.length; i += 1) {
f = functions[i];
fu = {};
+
for (j = 0; j < functionicity.length; j += 1) {
fu[functionicity[j]] = [];
}
- for (n in f) {
- if (is_own(f, n) && n.charAt(0) !== '(') {
- v = f[n];
- if (v === 'unction') {
- v = 'unused';
- }
- if (Array.isArray(fu[v])) {
- fu[v].push(n);
- if (v === 'unused') {
- unused.push({
- name: n,
- line: f['(line)'],
- 'function': f['(name)']
- });
- }
- }
- }
- }
+
for (j = 0; j < functionicity.length; j += 1) {
if (fu[functionicity[j]].length === 0) {
delete fu[functionicity[j]];
}
}
- fu.name = f['(name)'];
- fu.param = f['(params)'];
- fu.line = f['(line)'];
- fu.last = f['(last)'];
+
+ fu.name = f["(name)"];
+ fu.param = f["(params)"];
+ fu.line = f["(line)"];
+ fu.character = f["(character)"];
+ fu.last = f["(last)"];
+ fu.lastcharacter = f["(lastcharacter)"];
data.functions.push(fu);
}
- if (unused.length > 0) {
- data.unused = unused;
+ if (unuseds.length > 0) {
+ data.unused = unuseds;
}
members = [];
for (n in member) {
- if (typeof member[n] === 'number') {
+ if (typeof member[n] === "number") {
data.member = member;
break;
}
@@ -4330,140 +4744,14 @@ loop: for (;;) {
return data;
};
- itself.report = function (option) {
- var data = itself.data();
-
- var a = [], c, e, err, f, i, k, l, m = '', n, o = [], s;
-
- function detail(h, array) {
- var b, i, singularity;
- if (array) {
- o.push('' + h + ' ');
- array = array.sort();
- for (i = 0; i < array.length; i += 1) {
- if (array[i] !== singularity) {
- singularity = array[i];
- o.push((b ? ', ' : '') + singularity);
- b = true;
- }
- }
- o.push('
');
- }
- }
-
-
- if (data.errors || data.implieds || data.unused) {
- err = true;
- o.push('Error: ');
- if (data.errors) {
- for (i = 0; i < data.errors.length; i += 1) {
- c = data.errors[i];
- if (c) {
- e = c.evidence || '';
- o.push('
Problem' + (isFinite(c.line) ? ' at line ' +
- c.line + ' character ' + c.character : '') +
- ': ' + c.reason.entityify() +
- '
' +
- (e && (e.length > 80 ? e.slice(0, 77) + '...' :
- e).entityify()) + '
');
- }
- }
- }
-
- if (data.implieds) {
- s = [];
- for (i = 0; i < data.implieds.length; i += 1) {
- s[i] = '
' + data.implieds[i].name + ' ' +
- data.implieds[i].line + ' ';
- }
- o.push('
Implied global: ' + s.join(', ') + '
');
- }
-
- if (data.unused) {
- s = [];
- for (i = 0; i < data.unused.length; i += 1) {
- s[i] = '
' + data.unused[i].name + ' ' +
- data.unused[i].line + ' ' +
- data.unused[i]['function'] + '';
- }
- o.push('
Unused variable: ' + s.join(', ') + '
');
- }
- if (data.json) {
- o.push('
JSON: bad.
');
- }
- o.push('
');
- }
-
- if (!option) {
-
- o.push('');
-
- if (data.urls) {
- detail("URLs
", data.urls, '
');
- }
-
- if (data.json && !err) {
- o.push('
JSON: good.
');
- } else if (data.globals) {
- o.push('
Global ' +
- data.globals.sort().join(', ') + '
');
- } else {
- o.push('
No new global variables introduced.
');
- }
-
- for (i = 0; i < data.functions.length; i += 1) {
- f = data.functions[i];
-
- o.push('
' + f.line + '-' +
- f.last + ' ' + (f.name || '') + '(' +
- (f.param ? f.param.join(', ') : '') + ')
');
- detail('
Unused ', f.unused);
- detail('Closure', f.closure);
- detail('Variable', f['var']);
- detail('Exception', f.exception);
- detail('Outer', f.outer);
- detail('Global', f.global);
- detail('Label', f.label);
- }
-
- if (data.member) {
- a = Object.keys(data.member);
- if (a.length) {
- a = a.sort();
- m = '
/*members ';
- l = 10;
- for (i = 0; i < a.length; i += 1) {
- k = a[i];
- n = k.name();
- if (l + n.length > 72) {
- o.push(m + ' ');
- m = ' ';
- l = 1;
- }
- l += n.length + 2;
- if (data.member[k] === 1) {
- n = '' + n + ' ';
- }
- if (i < a.length - 1) {
- n += ', ';
- }
- m += n;
- }
- o.push(m + ' */ ');
- }
- o.push('
');
- }
- }
- return o.join('');
- };
-
itself.jshint = itself;
return itself;
}());
// Make JSHINT a Node module, if possible.
-if (typeof exports === 'object' && exports)
+if (typeof exports === "object" && exports) {
exports.JSHINT = JSHINT;
+}
-});
+});
\ No newline at end of file
diff --git a/tool/update_deps.js b/tool/update_deps.js
index d39d1d9d..0ad38e94 100644
--- a/tool/update_deps.js
+++ b/tool/update_deps.js
@@ -8,11 +8,13 @@ var rootDir = __dirname + "/../lib/ace/"
var deps = [{
path: "worker/jshint.js",
url: "https://raw.github.com/jshint/jshint/master/jshint.js",
- needsFixup: true
-}, {
- path: "worker/jslint.js",
- url: "https://raw.github.com/douglascrockford/JSLint/master/jslint.js",
- needsFixup: true
+ needsFixup: true,
+ postProcess: function(t) {
+ return t.replace(
+ /"Expected a conditional expression and instead saw an assignment."/g,
+ '"Assignment in conditional expression"'
+ );
+ }
}, {
path: "mode/css/csslint.js",
url: "https://raw.github.com/stubbornella/csslint/master/release/csslint-node.js",
@@ -43,7 +45,9 @@ var getDep = function(dep) {
data = "define(function(require, exports, module) {\n"
+ data
+ "\n});"
-
+ if (dep.postProcess)
+ data = dep.postProcess(data)
+
fs.writeFile(rootDir + dep.path, data, "utf-8", function(err){
if (err) throw err
console.log("File " + dep.path + " saved.")
From 5016cc3305a1f91a2b70b827937521d0bbbb0123 Mon Sep 17 00:00:00 2001
From: nightwing
Date: Sat, 1 Sep 2012 23:06:05 +0400
Subject: [PATCH 013/165] use only jshint in javascript worker
---
lib/ace/mode/javascript.js | 20 +-
lib/ace/{worker => mode/javascript}/jshint.js | 0
lib/ace/mode/javascript_worker.js | 155 +-
lib/ace/narcissus/definitions.js | 683 --
lib/ace/narcissus/lexer.js | 584 --
lib/ace/narcissus/options.js | 48 -
lib/ace/narcissus/parser.js | 2057 ------
lib/ace/worker/jslint.js | 6396 -----------------
8 files changed, 126 insertions(+), 9817 deletions(-)
rename lib/ace/{worker => mode/javascript}/jshint.js (100%)
delete mode 100644 lib/ace/narcissus/definitions.js
delete mode 100644 lib/ace/narcissus/lexer.js
delete mode 100644 lib/ace/narcissus/options.js
delete mode 100644 lib/ace/narcissus/parser.js
delete mode 100644 lib/ace/worker/jslint.js
diff --git a/lib/ace/mode/javascript.js b/lib/ace/mode/javascript.js
index c40200e0..3b1460a8 100644
--- a/lib/ace/mode/javascript.js
+++ b/lib/ace/mode/javascript.js
@@ -123,25 +123,9 @@ oop.inherits(Mode, TextMode);
this.createWorker = function(session) {
var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
worker.attachToDocument(session.getDocument());
-
+
worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i=", ">",
- "<<", ">>", ">>>",
- "+", "-",
- "*", "/", "%",
- "!", "~", "UNARY_PLUS", "UNARY_MINUS",
- "++", "--",
- ".",
- "[", "]",
- "{", "}",
- "(", ")",
-
- // Nonterminal tree node type codes.
- "SCRIPT", "BLOCK", "LABEL", "FOR_IN", "CALL", "NEW_WITH_ARGS", "INDEX",
- "ARRAY_INIT", "OBJECT_INIT", "PROPERTY_INIT", "GETTER", "SETTER",
- "GROUP", "LIST", "LET_BLOCK", "ARRAY_COMP", "GENERATOR", "COMP_TAIL",
-
- // Contextual keywords.
- "IMPLEMENTS", "INTERFACE", "LET", "MODULE", "PACKAGE", "PRIVATE",
- "PROTECTED", "PUBLIC", "STATIC", "USE", "YIELD",
-
- // Terminals.
- "IDENTIFIER", "NUMBER", "STRING", "REGEXP",
-
- // Keywords.
- "break",
- "case", "catch", "const", "continue",
- "debugger", "default", "delete", "do",
- "else", "export",
- "false", "finally", "for", "function",
- "if", "import", "in", "instanceof",
- "new", "null",
- "return",
- "switch",
- "this", "throw", "true", "try", "typeof",
- "var", "void",
- "while", "with",
-];
-
-var strictKeywords = {
- __proto__: null,
- "implements": true,
- "interface": true,
- "let": true,
- //"module": true,
- "package": true,
- "private": true,
- "protected": true,
- "public": true,
- "static": true,
- "use": true,
- "yield": true
-};
-
-var statementStartTokens = [
- "break",
- "const", "continue",
- "debugger", "do",
- "for",
- "if",
- "let",
- "return",
- "switch",
- "throw", "try",
- "var",
- "yield",
- "while", "with",
-];
-
-// Whitespace characters (see ECMA-262 7.2)
-var whitespaceChars = [
- // normal whitespace:
- "\u0009", "\u000B", "\u000C", "\u0020", "\u00A0", "\uFEFF",
-
- // high-Unicode whitespace:
- "\u1680", "\u180E",
- "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006",
- "\u2007", "\u2008", "\u2009", "\u200A",
- "\u202F", "\u205F", "\u3000"
-];
-
-var whitespace = {};
-for (var i = 0; i < whitespaceChars.length; i++) {
- whitespace[whitespaceChars[i]] = true;
-}
-
-// Operator and punctuator mapping from token to tree node type name.
-// NB: because the lexer doesn't backtrack, all token prefixes must themselves
-// be valid tokens (e.g. !== is acceptable because its prefixes are the valid
-// tokens != and !).
-var opTypeNames = {
- '\n': "NEWLINE",
- ';': "SEMICOLON",
- ',': "COMMA",
- '?': "HOOK",
- ':': "COLON",
- '||': "OR",
- '&&': "AND",
- '|': "BITWISE_OR",
- '^': "BITWISE_XOR",
- '&': "BITWISE_AND",
- '===': "STRICT_EQ",
- '==': "EQ",
- '=': "ASSIGN",
- '!==': "STRICT_NE",
- '!=': "NE",
- '<<': "LSH",
- '<=': "LE",
- '<': "LT",
- '>>>': "URSH",
- '>>': "RSH",
- '>=': "GE",
- '>': "GT",
- '++': "INCREMENT",
- '--': "DECREMENT",
- '+': "PLUS",
- '-': "MINUS",
- '*': "MUL",
- '/': "DIV",
- '%': "MOD",
- '!': "NOT",
- '~': "BITWISE_NOT",
- '.': "DOT",
- '[': "LEFT_BRACKET",
- ']': "RIGHT_BRACKET",
- '{': "LEFT_CURLY",
- '}': "RIGHT_CURLY",
- '(': "LEFT_PAREN",
- ')': "RIGHT_PAREN"
-};
-
-// Hash of keyword identifier to tokens index. NB: we must null __proto__ to
-// avoid toString, etc. namespace pollution.
-var keywords = {__proto__: null};
-var mozillaKeywords = {__proto__: null};
-
-// Define const END, etc., based on the token names. Also map name to index.
-var tokenIds = {};
-
-var hostSupportsEvalConst = (function() {
- try {
- return eval("(function(s) { eval(s); return x })('const x = true;')");
- } catch (e) {
- return false;
- }
-})();
-
-// Building up a string to be eval'd in different contexts.
-var consts = hostSupportsEvalConst ? "const " : "var ";
-for (var i = 0, j = tokens.length; i < j; i++) {
- if (i > 0)
- consts += ", ";
- var t = tokens[i];
- var name;
- if (/^[a-z]/.test(t)) {
- name = t.toUpperCase();
- if (name === "LET" || name === "YIELD")
- mozillaKeywords[name] = i;
- if (strictKeywords[name])
- strictKeywords[name] = i;
- keywords[t] = i;
- } else {
- name = (/^\W/.test(t) ? opTypeNames[t] : t);
- }
- consts += name + " = " + i;
- tokenIds[name] = i;
- tokens[t] = i;
-}
-consts += ";";
-
-var isStatementStartCode = {__proto__: null};
-for (i = 0, j = statementStartTokens.length; i < j; i++)
- isStatementStartCode[keywords[statementStartTokens[i]]] = true;
-
-// Map assignment operators to their indexes in the tokens array.
-var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%'];
-
-for (i = 0, j = assignOps.length; i < j; i++) {
- t = assignOps[i];
- assignOps[t] = tokens[t];
-}
-
-function defineGetter(obj, prop, fn, dontDelete, dontEnum) {
- Object.defineProperty(obj, prop,
- { get: fn, configurable: !dontDelete, enumerable: !dontEnum });
-}
-
-function defineGetterSetter(obj, prop, getter, setter, dontDelete, dontEnum) {
- Object.defineProperty(obj, prop, {
- get: getter,
- set: setter,
- configurable: !dontDelete,
- enumerable: !dontEnum
- });
-}
-
-function defineMemoGetter(obj, prop, fn, dontDelete, dontEnum) {
- Object.defineProperty(obj, prop, {
- get: function() {
- var val = fn();
- defineProperty(obj, prop, val, dontDelete, true, dontEnum);
- return val;
- },
- configurable: true,
- enumerable: !dontEnum
- });
-}
-
-function defineProperty(obj, prop, val, dontDelete, readOnly, dontEnum) {
- Object.defineProperty(obj, prop,
- { value: val, writable: !readOnly, configurable: !dontDelete,
- enumerable: !dontEnum });
-}
-
-// Returns true if fn is a native function. (Note: SpiderMonkey specific.)
-function isNativeCode(fn) {
- // Relies on the toString method to identify native code.
- return ((typeof fn) === "function") && fn.toString().match(/\[native code\]/);
-}
-
-var Fpapply = Function.prototype.apply;
-
-function apply(f, o, a) {
- return Fpapply.call(f, [o].concat(a));
-}
-
-var applyNew;
-
-// ES5's bind is a simpler way to implement applyNew
-if (Function.prototype.bind) {
- applyNew = function applyNew(f, a) {
- return new (f.bind.apply(f, [,].concat(Array.prototype.slice.call(a))))();
- };
-} else {
- applyNew = function applyNew(f, a) {
- switch (a.length) {
- case 0:
- return new f();
- case 1:
- return new f(a[0]);
- case 2:
- return new f(a[0], a[1]);
- case 3:
- return new f(a[0], a[1], a[2]);
- default:
- var argStr = "a[0]";
- for (var i = 1, n = a.length; i < n; i++)
- argStr += ",a[" + i + "]";
- return eval("new f(" + argStr + ")");
- }
- };
-}
-
-function getPropertyDescriptor(obj, name) {
- while (obj) {
- if (({}).hasOwnProperty.call(obj, name))
- return Object.getOwnPropertyDescriptor(obj, name);
- obj = Object.getPrototypeOf(obj);
- }
-}
-
-function getPropertyNames(obj) {
- var table = Object.create(null, {});
- while (obj) {
- var names = Object.getOwnPropertyNames(obj);
- for (var i = 0, n = names.length; i < n; i++)
- table[names[i]] = true;
- obj = Object.getPrototypeOf(obj);
- }
- return Object.keys(table);
-}
-
-function getOwnProperties(obj) {
- var map = {};
- for (var name in Object.getOwnPropertyNames(obj))
- map[name] = Object.getOwnPropertyDescriptor(obj, name);
- return map;
-}
-
-function blacklistHandler(target, blacklist) {
- var mask = Object.create(null, {});
- var redirect = Dict.create(blacklist).mapObject(function(name) { return mask; });
- return mixinHandler(redirect, target);
-}
-
-function whitelistHandler(target, whitelist) {
- var catchall = Object.create(null, {});
- var redirect = Dict.create(whitelist).mapObject(function(name) { return target; });
- return mixinHandler(redirect, catchall);
-}
-
-/*
- * Mixin proxies break the single-inheritance model of prototypes, so
- * the handler treats all properties as own-properties:
- *
- * X
- * |
- * +------------+------------+
- * | O |
- * | | |
- * | O O O |
- * | | | | |
- * | O O O O |
- * | | | | | |
- * | O O O O O |
- * | | | | | | |
- * +-(*)--(w)--(x)--(y)--(z)-+
- */
-
-function mixinHandler(redirect, catchall) {
- function targetFor(name) {
- return hasOwn(redirect, name) ? redirect[name] : catchall;
- }
-
- function getMuxPropertyDescriptor(name) {
- var desc = getPropertyDescriptor(targetFor(name), name);
- if (desc)
- desc.configurable = true;
- return desc;
- }
-
- function getMuxPropertyNames() {
- var names1 = Object.getOwnPropertyNames(redirect).filter(function(name) {
- return name in redirect[name];
- });
- var names2 = getPropertyNames(catchall).filter(function(name) {
- return !hasOwn(redirect, name);
- });
- return names1.concat(names2);
- }
-
- function enumerateMux() {
- var result = Object.getOwnPropertyNames(redirect).filter(function(name) {
- return name in redirect[name];
- });
- for (name in catchall) {
- if (!hasOwn(redirect, name))
- result.push(name);
- };
- return result;
- }
-
- function hasMux(name) {
- return name in targetFor(name);
- }
-
- return {
- getOwnPropertyDescriptor: getMuxPropertyDescriptor,
- getPropertyDescriptor: getMuxPropertyDescriptor,
- getOwnPropertyNames: getMuxPropertyNames,
- defineProperty: function(name, desc) {
- Object.defineProperty(targetFor(name), name, desc);
- },
- "delete": function(name) {
- var target = targetFor(name);
- return delete target[name];
- },
- // FIXME: ha ha ha
- fix: function() { },
- has: hasMux,
- hasOwn: hasMux,
- get: function(receiver, name) {
- var target = targetFor(name);
- return target[name];
- },
- set: function(receiver, name, val) {
- var target = targetFor(name);
- target[name] = val;
- return true;
- },
- enumerate: enumerateMux,
- keys: enumerateMux
- };
-}
-
-function makePassthruHandler(obj) {
- // Handler copied from
- // http://wiki.ecmascript.org/doku.php?id=harmony:proxies&s=proxy%20object#examplea_no-op_forwarding_proxy
- return {
- getOwnPropertyDescriptor: function(name) {
- var desc = Object.getOwnPropertyDescriptor(obj, name);
-
- // a trapping proxy's properties must always be configurable
- desc.configurable = true;
- return desc;
- },
- getPropertyDescriptor: function(name) {
- var desc = getPropertyDescriptor(obj, name);
-
- // a trapping proxy's properties must always be configurable
- desc.configurable = true;
- return desc;
- },
- getOwnPropertyNames: function() {
- return Object.getOwnPropertyNames(obj);
- },
- defineProperty: function(name, desc) {
- Object.defineProperty(obj, name, desc);
- },
- "delete": function(name) { return delete obj[name]; },
- fix: function() {
- if (Object.isFrozen(obj)) {
- return getOwnProperties(obj);
- }
-
- // As long as obj is not frozen, the proxy won't allow itself to be fixed.
- return undefined; // will cause a TypeError to be thrown
- },
-
- has: function(name) { return name in obj; },
- hasOwn: function(name) { return ({}).hasOwnProperty.call(obj, name); },
- get: function(receiver, name) { return obj[name]; },
-
- // bad behavior when set fails in non-strict mode
- set: function(receiver, name, val) { obj[name] = val; return true; },
- enumerate: function() {
- var result = [];
- for (name in obj) { result.push(name); };
- return result;
- },
- keys: function() { return Object.keys(obj); }
- };
-}
-
-var hasOwnProperty = ({}).hasOwnProperty;
-
-function hasOwn(obj, name) {
- return hasOwnProperty.call(obj, name);
-}
-
-function Dict(table, size) {
- this.table = table || Object.create(null, {});
- this.size = size || 0;
-}
-
-Dict.create = function(table) {
- var init = Object.create(null, {});
- var size = 0;
- var names = Object.getOwnPropertyNames(table);
- for (var i = 0, n = names.length; i < n; i++) {
- var name = names[i];
- init[name] = table[name];
- size++;
- }
- return new Dict(init, size);
-};
-
-Dict.prototype = {
- has: function(x) { return hasOwnProperty.call(this.table, x); },
- set: function(x, v) {
- if (!hasOwnProperty.call(this.table, x))
- this.size++;
- this.table[x] = v;
- },
- get: function(x) { return this.table[x]; },
- getDef: function(x, thunk) {
- if (!hasOwnProperty.call(this.table, x)) {
- this.size++;
- this.table[x] = thunk();
- }
- return this.table[x];
- },
- forEach: function(f) {
- var table = this.table;
- for (var key in table)
- f.call(this, key, table[key]);
- },
- map: function(f) {
- var table1 = this.table;
- var table2 = Object.create(null, {});
- this.forEach(function(key, val) {
- table2[key] = f.call(this, val, key);
- });
- return new Dict(table2, this.size);
- },
- mapObject: function(f) {
- var table1 = this.table;
- var table2 = Object.create(null, {});
- this.forEach(function(key, val) {
- table2[key] = f.call(this, val, key);
- });
- return table2;
- },
- toObject: function() {
- return this.mapObject(function(val) { return val; });
- },
- choose: function() {
- return Object.getOwnPropertyNames(this.table)[0];
- },
- remove: function(x) {
- if (hasOwnProperty.call(this.table, x)) {
- this.size--;
- delete this.table[x];
- }
- },
- copy: function() {
- var table = Object.create(null, {});
- for (var key in this.table)
- table[key] = this.table[key];
- return new Dict(table, this.size);
- },
- keys: function() {
- return Object.keys(this.table);
- },
- toString: function() { return "[object Dict]" }
-};
-
-var _WeakMap = typeof WeakMap === "function" ? WeakMap : (function() {
- // shim for ES6 WeakMap with poor asymptotics
- function WeakMap(array) {
- this.array = array || [];
- }
-
- function searchMap(map, key, found, notFound) {
- var a = map.array;
- for (var i = 0, n = a.length; i < n; i++) {
- var pair = a[i];
- if (pair.key === key)
- return found(pair, i);
- }
- return notFound();
- }
-
- WeakMap.prototype = {
- has: function(x) {
- return searchMap(this, x, function() { return true }, function() { return false });
- },
- set: function(x, v) {
- var a = this.array;
- searchMap(this, x,
- function(pair) { pair.value = v },
- function() { a.push({ key: x, value: v }) });
- },
- get: function(x) {
- return searchMap(this, x,
- function(pair) { return pair.value },
- function() { return null });
- },
- "delete": function(x) {
- var a = this.array;
- searchMap(this, x,
- function(pair, i) { a.splice(i, 1) },
- function() { });
- },
- toString: function() { return "[object WeakMap]" }
- };
-
- return WeakMap;
-})();
-
-// non-destructive stack
-function Stack(elts) {
- this.elts = elts || null;
-}
-
-Stack.prototype = {
- push: function(x) {
- return new Stack({ top: x, rest: this.elts });
- },
- top: function() {
- if (!this.elts)
- throw new Error("empty stack");
- return this.elts.top;
- },
- isEmpty: function() {
- return this.top === null;
- },
- find: function(test) {
- for (var elts = this.elts; elts; elts = elts.rest) {
- if (test(elts.top))
- return elts.top;
- }
- return null;
- },
- has: function(x) {
- return Boolean(this.find(function(elt) { return elt === x }));
- },
- forEach: function(f) {
- for (var elts = this.elts; elts; elts = elts.rest) {
- f(elts.top);
- }
- }
-};
-
-if (!Array.prototype.copy) {
- defineProperty(Array.prototype, "copy",
- function() {
- var result = [];
- for (var i = 0, n = this.length; i < n; i++)
- result[i] = this[i];
- return result;
- }, false, false, true);
-}
-
-if (!Array.prototype.top) {
- defineProperty(Array.prototype, "top",
- function() {
- return this.length && this[this.length-1];
- }, false, false, true);
-}
-
-exports.tokens = tokens;
-exports.whitespace = whitespace;
-exports.opTypeNames = opTypeNames;
-exports.keywords = keywords;
-exports.mozillaKeywords = mozillaKeywords;
-exports.strictKeywords = strictKeywords;
-exports.isStatementStartCode = isStatementStartCode;
-exports.tokenIds = tokenIds;
-exports.consts = consts;
-exports.assignOps = assignOps;
-exports.defineGetter = defineGetter;
-exports.defineGetterSetter = defineGetterSetter;
-exports.defineMemoGetter = defineMemoGetter;
-exports.defineProperty = defineProperty;
-exports.isNativeCode = isNativeCode;
-exports.apply = apply;
-exports.applyNew = applyNew;
-exports.mixinHandler = mixinHandler;
-exports.whitelistHandler = whitelistHandler;
-exports.blacklistHandler = blacklistHandler;
-exports.makePassthruHandler = makePassthruHandler;
-exports.Dict = Dict;
-exports.WeakMap = _WeakMap;
-exports.Stack = Stack;
-
-});
diff --git a/lib/ace/narcissus/lexer.js b/lib/ace/narcissus/lexer.js
deleted file mode 100644
index c830bce3..00000000
--- a/lib/ace/narcissus/lexer.js
+++ /dev/null
@@ -1,584 +0,0 @@
-/* ***** 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 ***** */
-
-/*
- * Narcissus - JS implemented in JS.
- *
- * Lexical scanner.
- */
-
- define(function(require, exports, module) {
-
-var definitions = require('./definitions');
-
-// Set constants in the local scope.
-eval(definitions.consts);
-
-// Build up a trie of operator tokens.
-var opTokens = {};
-for (var op in definitions.opTypeNames) {
- if (op === '\n' || op === '.')
- continue;
-
- var node = opTokens;
- for (var i = 0; i < op.length; i++) {
- var ch = op[i];
- if (!(ch in node))
- node[ch] = {};
- node = node[ch];
- node.op = op;
- }
-}
-
-/*
- * Since JavaScript provides no convenient way to determine if a
- * character is in a particular Unicode category, we use
- * metacircularity to accomplish this (oh yeaaaah!)
- */
-function isValidIdentifierChar(ch, first) {
- // check directly for ASCII
- if (ch <= "\u007F") {
- if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '$' || ch === '_' ||
- (!first && (ch >= '0' && ch <= '9'))) {
- return true;
- }
- return false;
- }
-
- // create an object to test this in
- var x = {};
- x["x"+ch] = true;
- x[ch] = true;
-
- // then use eval to determine if it's a valid character
- var valid = false;
- try {
- valid = (Function("x", "return (x." + (first?"":"x") + ch + ");")(x) === true);
- } catch (ex) {}
-
- return valid;
-}
-
-function isIdentifier(str) {
- if (typeof str !== "string")
- return false;
-
- if (str.length === 0)
- return false;
-
- if (!isValidIdentifierChar(str[0], true))
- return false;
-
- for (var i = 1; i < str.length; i++) {
- if (!isValidIdentifierChar(str[i], false))
- return false;
- }
-
- return true;
-}
-
-/*
- * Tokenizer :: (source, filename, line number, boolean) -> Tokenizer
- */
-function Tokenizer(s, f, l, allowHTMLComments) {
- this.cursor = 0;
- this.source = String(s);
- this.tokens = [];
- this.tokenIndex = 0;
- this.lookahead = 0;
- this.scanNewlines = false;
- this.filename = f || "";
- this.lineno = l || 1;
- this.allowHTMLComments = allowHTMLComments;
- this.blockComments = null;
-}
-
-Tokenizer.prototype = {
- get done() {
- // We need to set scanOperand to true here because the first thing
- // might be a regexp.
- return this.peek(true) === END;
- },
-
- get token() {
- return this.tokens[this.tokenIndex];
- },
-
- match: function (tt, scanOperand, keywordIsName) {
- return this.get(scanOperand, keywordIsName) === tt || this.unget();
- },
-
- mustMatch: function (tt, keywordIsName) {
- if (!this.match(tt, false, keywordIsName)) {
- throw this.newSyntaxError("Missing " +
- definitions.tokens[tt].toLowerCase());
- }
- return this.token;
- },
-
- peek: function (scanOperand) {
- var tt, next;
- if (this.lookahead) {
- next = this.tokens[(this.tokenIndex + this.lookahead) & 3];
- tt = (this.scanNewlines && next.lineno !== this.lineno)
- ? NEWLINE
- : next.type;
- } else {
- tt = this.get(scanOperand);
- this.unget();
- }
- return tt;
- },
-
- peekOnSameLine: function (scanOperand) {
- this.scanNewlines = true;
- var tt = this.peek(scanOperand);
- this.scanNewlines = false;
- return tt;
- },
-
- lastBlockComment: function() {
- var length = this.blockComments.length;
- return length ? this.blockComments[length - 1] : null;
- },
-
- // Eat comments and whitespace.
- skip: function () {
- var input = this.source;
- this.blockComments = [];
- for (;;) {
- var ch = input[this.cursor++];
- var next = input[this.cursor];
- // handle \r, \r\n and (always preferable) \n
- if (ch === '\r') {
- // if the next character is \n, we don't care about this at all
- if (next === '\n') continue;
-
- // otherwise, we want to consider this as a newline
- ch = '\n';
- }
-
- if (ch === '\n' && !this.scanNewlines) {
- this.lineno++;
- } else if (ch === '/' && next === '*') {
- var commentStart = ++this.cursor;
- for (;;) {
- ch = input[this.cursor++];
- if (ch === undefined)
- throw this.newSyntaxError("Unterminated comment");
-
- if (ch === '*') {
- next = input[this.cursor];
- if (next === '/') {
- var commentEnd = this.cursor - 1;
- this.cursor++;
- break;
- }
- } else if (ch === '\n') {
- this.lineno++;
- }
- }
- this.blockComments.push(input.substring(commentStart, commentEnd));
- } else if ((ch === '/' && next === '/') ||
- (this.allowHTMLComments && ch === '<' && next === '!' &&
- input[this.cursor + 1] === '-' && input[this.cursor + 2] === '-' &&
- (this.cursor += 2))) {
- this.cursor++;
- for (;;) {
- ch = input[this.cursor++];
- next = input[this.cursor];
- if (ch === undefined)
- return;
-
- if (ch === '\r') {
- // check for \r\n
- if (next !== '\n') ch = '\n';
- }
-
- if (ch === '\n') {
- if (this.scanNewlines) {
- this.cursor--;
- } else {
- this.lineno++;
- }
- break;
- }
- }
- } else if (!(ch in definitions.whitespace)) {
- this.cursor--;
- return;
- }
- }
- },
-
- // Lex the exponential part of a number, if present. Return true iff an
- // exponential part was found.
- lexExponent: function() {
- var input = this.source;
- var next = input[this.cursor];
- if (next === 'e' || next === 'E') {
- this.cursor++;
- ch = input[this.cursor++];
- if (ch === '+' || ch === '-')
- ch = input[this.cursor++];
-
- if (ch < '0' || ch > '9')
- throw this.newSyntaxError("Missing exponent");
-
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '9');
- this.cursor--;
-
- return true;
- }
-
- return false;
- },
-
- lexZeroNumber: function (ch) {
- var token = this.token, input = this.source;
- token.type = NUMBER;
-
- ch = input[this.cursor++];
- if (ch === '.') {
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '9');
- this.cursor--;
-
- this.lexExponent();
- token.value = parseFloat(
- input.substring(token.start, this.cursor));
- } else if (ch === 'x' || ch === 'X') {
- do {
- ch = input[this.cursor++];
- } while ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') ||
- (ch >= 'A' && ch <= 'F'));
- this.cursor--;
-
- token.value = parseInt(input.substring(token.start, this.cursor));
- } else if (ch >= '0' && ch <= '7') {
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '7');
- this.cursor--;
-
- token.value = parseInt(input.substring(token.start, this.cursor));
- } else {
- this.cursor--;
- this.lexExponent(); // 0E1, &c.
- token.value = 0;
- }
- },
-
- lexNumber: function (ch) {
- var token = this.token, input = this.source;
- token.type = NUMBER;
-
- var floating = false;
- do {
- ch = input[this.cursor++];
- if (ch === '.' && !floating) {
- floating = true;
- ch = input[this.cursor++];
- }
- } while (ch >= '0' && ch <= '9');
-
- this.cursor--;
-
- var exponent = this.lexExponent();
- floating = floating || exponent;
-
- var str = input.substring(token.start, this.cursor);
- token.value = floating ? parseFloat(str) : parseInt(str);
- },
-
- lexDot: function (ch) {
- var token = this.token, input = this.source;
- var next = input[this.cursor];
- if (next >= '0' && next <= '9') {
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '9');
- this.cursor--;
-
- this.lexExponent();
-
- token.type = NUMBER;
- token.value = parseFloat(
- input.substring(token.start, this.cursor));
- } else {
- token.type = DOT;
- token.assignOp = null;
- token.value = '.';
- }
- },
-
- lexString: function (ch) {
- var token = this.token, input = this.source;
- token.type = STRING;
-
- var hasEscapes = false;
- var delim = ch;
- if (input.length <= this.cursor)
- throw this.newSyntaxError("Unterminated string literal");
- while ((ch = input[this.cursor++]) !== delim) {
- if (ch == '\n' || ch == '\r')
- throw this.newSyntaxError("Unterminated string literal");
- if (this.cursor == input.length)
- throw this.newSyntaxError("Unterminated string literal");
- if (ch === '\\') {
- hasEscapes = true;
- if (++this.cursor == input.length)
- throw this.newSyntaxError("Unterminated string literal");
- }
- }
-
- token.value = hasEscapes
- ? eval(input.substring(token.start, this.cursor))
- : input.substring(token.start + 1, this.cursor - 1);
- },
-
- lexRegExp: function (ch) {
- var token = this.token, input = this.source;
- token.type = REGEXP;
-
- do {
- ch = input[this.cursor++];
- if (ch === '\\') {
- this.cursor++;
- } else if (ch === '[') {
- do {
- if (ch === undefined)
- throw this.newSyntaxError("Unterminated character class");
-
- if (ch === '\\')
- this.cursor++;
-
- ch = input[this.cursor++];
- } while (ch !== ']');
- } else if (ch === undefined) {
- throw this.newSyntaxError("Unterminated regex");
- }
- } while (ch !== '/');
-
- do {
- ch = input[this.cursor++];
- } while (ch >= 'a' && ch <= 'z');
-
- this.cursor--;
-
- token.value = eval(input.substring(token.start, this.cursor));
- },
-
- lexOp: function (ch) {
- var token = this.token, input = this.source;
-
- // A bit ugly, but it seems wasteful to write a trie lookup routine
- // for only 3 characters...
- var node = opTokens[ch];
- var next = input[this.cursor];
- if (next in node) {
- node = node[next];
- this.cursor++;
- next = input[this.cursor];
- if (next in node) {
- node = node[next];
- this.cursor++;
- next = input[this.cursor];
- }
- }
-
- var op = node.op;
- if (definitions.assignOps[op] && input[this.cursor] === '=') {
- this.cursor++;
- token.type = ASSIGN;
- token.assignOp = definitions.tokenIds[definitions.opTypeNames[op]];
- op += '=';
- } else {
- token.type = definitions.tokenIds[definitions.opTypeNames[op]];
- token.assignOp = null;
- }
-
- token.value = op;
- },
-
- // FIXME: Unicode escape sequences
- lexIdent: function (ch, keywordIsName) {
- var token = this.token;
- var id = ch;
-
- while ((ch = this.getValidIdentifierChar(false)) !== null) {
- id += ch;
- }
-
- token.type = IDENTIFIER;
- token.value = id;
-
- if (keywordIsName)
- return;
-
- var kw;
-
- if (this.parser.mozillaMode) {
- kw = definitions.mozillaKeywords[id];
- if (kw) {
- token.type = kw;
- return;
- }
- }
-
- if (this.parser.x.strictMode) {
- kw = definitions.strictKeywords[id];
- if (kw) {
- token.type = kw;
- return;
- }
- }
-
- kw = definitions.keywords[id];
- if (kw)
- token.type = kw;
- },
-
- /*
- * Tokenizer.get :: ([boolean[, boolean]]) -> token type
- *
- * Consume input *only* if there is no lookahead.
- * Dispatch to the appropriate lexing function depending on the input.
- */
- get: function (scanOperand, keywordIsName) {
- var token;
- while (this.lookahead) {
- --this.lookahead;
- this.tokenIndex = (this.tokenIndex + 1) & 3;
- token = this.tokens[this.tokenIndex];
- if (token.type !== NEWLINE || this.scanNewlines)
- return token.type;
- }
-
- this.skip();
-
- this.tokenIndex = (this.tokenIndex + 1) & 3;
- token = this.tokens[this.tokenIndex];
- if (!token)
- this.tokens[this.tokenIndex] = token = {};
-
- var input = this.source;
- if (this.cursor >= input.length)
- return token.type = END;
-
- token.start = this.cursor;
- token.lineno = this.lineno;
-
- var ich = this.getValidIdentifierChar(true);
- var ch = (ich === null) ? input[this.cursor++] : null;
- if (ich !== null) {
- this.lexIdent(ich, keywordIsName);
- } else if (scanOperand && ch === '/') {
- this.lexRegExp(ch);
- } else if (ch in opTokens) {
- this.lexOp(ch);
- } else if (ch === '.') {
- this.lexDot(ch);
- } else if (ch >= '1' && ch <= '9') {
- this.lexNumber(ch);
- } else if (ch === '0') {
- this.lexZeroNumber(ch);
- } else if (ch === '"' || ch === "'") {
- this.lexString(ch);
- } else if (this.scanNewlines && (ch === '\n' || ch === '\r')) {
- // if this was a \r, look for \r\n
- if (ch === '\r' && input[this.cursor] === '\n') this.cursor++;
- token.type = NEWLINE;
- token.value = '\n';
- this.lineno++;
- } else {
- throw this.newSyntaxError("Illegal token");
- }
-
- token.end = this.cursor;
- return token.type;
- },
-
- /*
- * Tokenizer.unget :: void -> undefined
- *
- * Match depends on unget returning undefined.
- */
- unget: function () {
- if (++this.lookahead === 4) throw "PANIC: too much lookahead!";
- this.tokenIndex = (this.tokenIndex - 1) & 3;
- },
-
- newSyntaxError: function (m) {
- m = (this.filename ? this.filename + ":" : "") + this.lineno + ": " + m;
- var e = new SyntaxError(m, this.filename, this.lineno);
- e.source = this.source;
- e.cursor = this.lookahead
- ? this.tokens[(this.tokenIndex + this.lookahead) & 3].start
- : this.cursor;
- return e;
- },
-
-
- /* Gets a single valid identifier char from the input stream, or null
- * if there is none.
- */
- getValidIdentifierChar: function(first) {
- var input = this.source;
- if (this.cursor >= input.length) return null;
- var ch = input[this.cursor];
-
- // first check for \u escapes
- if (ch === '\\' && input[this.cursor+1] === 'u') {
- // get the character value
- try {
- ch = String.fromCharCode(parseInt(
- input.substring(this.cursor + 2, this.cursor + 6),
- 16));
- } catch (ex) {
- return null;
- }
- this.cursor += 5;
- }
-
- var valid = isValidIdentifierChar(ch, first);
- if (valid) this.cursor++;
- return (valid ? ch : null);
- },
-};
-
-
-exports.isIdentifier = isIdentifier;
-exports.Tokenizer = Tokenizer;
-
-});
diff --git a/lib/ace/narcissus/options.js b/lib/ace/narcissus/options.js
deleted file mode 100644
index d399de38..00000000
--- a/lib/ace/narcissus/options.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/* ***** 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(function(require, exports, module) {
-
-// Global variables to hide from the interpreter
-exports.hiddenHostGlobals = { Narcissus: true };
-
-// Desugar SpiderMonkey language extensions?
-exports.desugarExtensions = false;
-
-// Allow HTML comments?
-exports.allowHTMLComments = false;
-
-// Allow non-standard Mozilla extensions?
-exports.mozillaMode = true;
-
-// Allow experimental paren-free mode?
-exports.parenFreeMode = false;
-
-});
diff --git a/lib/ace/narcissus/parser.js b/lib/ace/narcissus/parser.js
deleted file mode 100644
index dbb5947f..00000000
--- a/lib/ace/narcissus/parser.js
+++ /dev/null
@@ -1,2057 +0,0 @@
-/* ***** 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 ***** */
-
-/*
- * Narcissus - JS implemented in JS.
- *
- * Parser.
- */
-
-define(function(require, exports, module) {
-
-var lexer = require('./lexer');
-var definitions = require('./definitions');
-var options = require('./options');
-var Tokenizer = lexer.Tokenizer;
-
-var Dict = definitions.Dict;
-var Stack = definitions.Stack;
-
-// Set constants in the local scope.
-eval(definitions.consts);
-
-/*
- * pushDestructuringVarDecls :: (node, hoisting node) -> void
- *
- * Recursively add all destructured declarations to varDecls.
- */
-function pushDestructuringVarDecls(n, s) {
- for (var i in n) {
- var sub = n[i];
- if (sub.type === IDENTIFIER) {
- s.varDecls.push(sub);
- } else {
- pushDestructuringVarDecls(sub, s);
- }
- }
-}
-
-function Parser(tokenizer) {
- tokenizer.parser = this;
- this.t = tokenizer;
- this.x = null;
- this.unexpectedEOF = false;
- options.mozillaMode && (this.mozillaMode = true);
- options.parenFreeMode && (this.parenFreeMode = true);
-}
-
-function StaticContext(parentScript, parentBlock, inModule, inFunction, strictMode) {
- this.parentScript = parentScript;
- this.parentBlock = parentBlock || parentScript;
- this.inModule = inModule || false;
- this.inFunction = inFunction || false;
- this.inForLoopInit = false;
- this.topLevel = true;
- this.allLabels = new Stack();
- this.currentLabels = new Stack();
- this.labeledTargets = new Stack();
- this.defaultLoopTarget = null;
- this.defaultTarget = null;
- this.strictMode = strictMode;
-}
-
-StaticContext.prototype = {
- // non-destructive update via prototype extension
- update: function(ext) {
- var desc = {};
- for (var key in ext) {
- desc[key] = {
- value: ext[key],
- writable: true,
- enumerable: true,
- configurable: true
- }
- }
- return Object.create(this, desc);
- },
- pushLabel: function(label) {
- return this.update({ currentLabels: this.currentLabels.push(label),
- allLabels: this.allLabels.push(label) });
- },
- pushTarget: function(target) {
- var isDefaultLoopTarget = target.isLoop;
- var isDefaultTarget = isDefaultLoopTarget || target.type === SWITCH;
-
- if (this.currentLabels.isEmpty()) {
- if (isDefaultLoopTarget) this.update({ defaultLoopTarget: target });
- if (isDefaultTarget) this.update({ defaultTarget: target });
- return this;
- }
-
- target.labels = new Dict();
- this.currentLabels.forEach(function(label) {
- target.labels.set(label, true);
- });
- return this.update({ currentLabels: new Stack(),
- labeledTargets: this.labeledTargets.push(target),
- defaultLoopTarget: isDefaultLoopTarget
- ? target
- : this.defaultLoopTarget,
- defaultTarget: isDefaultTarget
- ? target
- : this.defaultTarget });
- },
- nest: function() {
- return this.topLevel ? this.update({ topLevel: false }) : this;
- },
- canImport: function() {
- return this.topLevel && !this.inFunction;
- },
- canExport: function() {
- return this.inModule && this.topLevel && !this.inFunction;
- },
- banWith: function() {
- return this.strictMode || this.inModule;
- },
- modulesAllowed: function() {
- return this.topLevel && !this.inFunction;
- }
-};
-
-var Pp = Parser.prototype;
-
-Pp.mozillaMode = false;
-
-Pp.parenFreeMode = false;
-
-Pp.withContext = function(x, f) {
- var x0 = this.x;
- this.x = x;
- var result = f.call(this);
- // NB: we don't bother with finally, since exceptions trash the parser
- this.x = x0;
- return result;
-};
-
-Pp.newNode = function newNode(opts) {
- return new Node(this.t, opts);
-};
-
-Pp.fail = function fail(msg) {
- throw this.t.newSyntaxError(msg);
-};
-
-Pp.match = function match(tt, scanOperand, keywordIsName) {
- return this.t.match(tt, scanOperand, keywordIsName);
-};
-
-Pp.mustMatch = function mustMatch(tt, keywordIsName) {
- return this.t.mustMatch(tt, keywordIsName);
-};
-
-Pp.peek = function peek(scanOperand) {
- return this.t.peek(scanOperand);
-};
-
-Pp.peekOnSameLine = function peekOnSameLine(scanOperand) {
- return this.t.peekOnSameLine(scanOperand);
-};
-
-Pp.done = function done() {
- return this.t.done;
-};
-
-/*
- * Script :: (boolean, boolean, boolean) -> node
- *
- * Parses the toplevel and module/function bodies.
- */
-Pp.Script = function Script(inModule, inFunction, expectEnd) {
- var node = this.newNode(scriptInit());
- var x2 = new StaticContext(node, node, inModule, inFunction);
- this.withContext(x2, function() {
- this.Statements(node, true);
- });
- if (expectEnd && !this.done())
- this.fail("expected end of input");
- return node;
-};
-
-/*
- * Pragma :: (expression statement node) -> boolean
- *
- * Checks whether a node is a pragma and annotates it.
- */
-function Pragma(n) {
- if (n.type === SEMICOLON) {
- var e = n.expression;
- if (e.type === STRING && e.value === "use strict") {
- n.pragma = "strict";
- return true;
- }
- }
- return false;
-}
-
-/*
- * Node :: (tokenizer, optional init object) -> node
- */
-function Node(t, init) {
- var token = t.token;
- if (token) {
- // If init.type exists it will override token.type.
- this.type = token.type;
- this.value = token.value;
- this.lineno = token.lineno;
-
- // Start and end are file positions for error handling.
- this.start = token.start;
- this.end = token.end;
- } else {
- this.lineno = t.lineno;
- }
-
- this.filename = t.filename;
- this.children = [];
-
- for (var prop in init)
- this[prop] = init[prop];
-}
-
-/*
- * SyntheticNode :: (optional init object) -> node
- */
-function SyntheticNode(init) {
- this.children = [];
- for (var prop in init)
- this[prop] = init[prop];
- this.synthetic = true;
-}
-
-var Np = Node.prototype = SyntheticNode.prototype = {};
-Np.constructor = Node;
-
-var TO_SOURCE_SKIP = {
- type: true,
- value: true,
- lineno: true,
- start: true,
- end: true,
- tokenizer: true,
- assignOp: true
-};
-function unevalableConst(code) {
- var token = definitions.tokens[code];
- var constName = definitions.opTypeNames.hasOwnProperty(token)
- ? definitions.opTypeNames[token]
- : token in definitions.keywords
- ? token.toUpperCase()
- : token;
- return { toSource: function() { return constName } };
-}
-Np.toSource = function toSource() {
- var mock = {};
- var self = this;
- mock.type = unevalableConst(this.type);
- // avoid infinite recursion in case of back-links
- if (this.generatingSource)
- return mock.toSource();
- this.generatingSource = true;
- if ("value" in this)
- mock.value = this.value;
- if ("lineno" in this)
- mock.lineno = this.lineno;
- if ("start" in this)
- mock.start = this.start;
- if ("end" in this)
- mock.end = this.end;
- if (this.assignOp)
- mock.assignOp = unevalableConst(this.assignOp);
- for (var key in this) {
- if (this.hasOwnProperty(key) && !(key in TO_SOURCE_SKIP))
- mock[key] = this[key];
- }
- try {
- return mock.toSource();
- } finally {
- delete this.generatingSource;
- }
-};
-
-// Always use push to add operands to an expression, to update start and end.
-Np.push = function (kid) {
- // kid can be null e.g. [1, , 2].
- if (kid !== null) {
- if (kid.start < this.start)
- this.start = kid.start;
- if (this.end < kid.end)
- this.end = kid.end;
- }
- return this.children.push(kid);
-}
-
-Node.indentLevel = 0;
-
-function tokenString(tt) {
- var t = definitions.tokens[tt];
- return /^\W/.test(t) ? definitions.opTypeNames[t] : t.toUpperCase();
-}
-
-Np.toString = function () {
- var a = [];
- for (var i in this) {
- if (this.hasOwnProperty(i) && i !== 'type' && i !== 'target')
- a.push({id: i, value: this[i]});
- }
- a.sort(function (a,b) { return (a.id < b.id) ? -1 : 1; });
- var INDENTATION = " ";
- var n = ++Node.indentLevel;
- var s = "{\n" + INDENTATION.repeat(n) + "type: " + tokenString(this.type);
- for (i = 0; i < a.length; i++)
- s += ",\n" + INDENTATION.repeat(n) + a[i].id + ": " + a[i].value;
- n = --Node.indentLevel;
- s += "\n" + INDENTATION.repeat(n) + "}";
- return s;
-}
-
-Np.synth = function(init) {
- var node = new SyntheticNode(init);
- node.filename = this.filename;
- node.lineno = this.lineno;
- node.start = this.start;
- node.end = this.end;
- return node;
-};
-
-/*
- * Helper init objects for common nodes.
- */
-
-var LOOP_INIT = { isLoop: true };
-
-function blockInit() {
- return { type: BLOCK, varDecls: [] };
-}
-
-function scriptInit() {
- return { type: SCRIPT,
- funDecls: [],
- varDecls: [],
- modDefns: new Dict(),
- modAssns: new Dict(),
- modDecls: new Dict(),
- modLoads: new Dict(),
- impDecls: [],
- expDecls: [],
- exports: new Dict(),
- hasEmptyReturn: false,
- hasReturnWithValue: false,
- hasYield: false };
-}
-
-definitions.defineGetter(Np, "length",
- function() {
- throw new Error("Node.prototype.length is gone; " +
- "use n.children.length instead");
- });
-
-definitions.defineProperty(String.prototype, "repeat",
- function(n) {
- var s = "", t = this + s;
- while (--n >= 0)
- s += t;
- return s;
- }, false, false, true);
-
-Pp.MaybeLeftParen = function MaybeLeftParen() {
- if (this.parenFreeMode)
- return this.match(LEFT_PAREN) ? LEFT_PAREN : END;
- return this.mustMatch(LEFT_PAREN).type;
-};
-
-Pp.MaybeRightParen = function MaybeRightParen(p) {
- if (p === LEFT_PAREN)
- this.mustMatch(RIGHT_PAREN);
-}
-
-/*
- * Statements :: (node[, boolean]) -> void
- *
- * Parses a sequence of Statements.
- */
-Pp.Statements = function Statements(n, topLevel) {
- var prologue = !!topLevel;
- try {
- while (!this.done() && this.peek(true) !== RIGHT_CURLY) {
- var n2 = this.Statement();
- n.push(n2);
- if (prologue && Pragma(n2)) {
- this.x.strictMode = true;
- n.strict = true;
- } else {
- prologue = false;
- }
- }
- } catch (e) {
- try {
- if (this.done())
- this.unexpectedEOF = true;
- } catch(e) {}
- throw e;
- }
-}
-
-Pp.Block = function Block() {
- this.mustMatch(LEFT_CURLY);
- var n = this.newNode(blockInit());
- var x2 = this.x.update({ parentBlock: n }).pushTarget(n);
- this.withContext(x2, function() {
- this.Statements(n);
- });
- this.mustMatch(RIGHT_CURLY);
- return n;
-}
-
-var DECLARED_FORM = 0, EXPRESSED_FORM = 1, STATEMENT_FORM = 2;
-
-/*
- * Export :: (binding node, boolean) -> Export
- *
- * Static semantic representation of a module export.
- */
-function Export(node, isDefinition) {
- this.node = node; // the AST node declaring this individual export
- this.isDefinition = isDefinition; // is the node an 'export'-annotated definition?
- this.resolved = null; // resolved pointer to the target of this export
-}
-
-/*
- * registerExport :: (Dict, EXPORT node) -> void
- */
-function registerExport(exports, decl) {
- function register(name, exp) {
- if (exports.has(name))
- throw new SyntaxError("multiple exports of " + name);
- exports.set(name, exp);
- }
-
- switch (decl.type) {
- case MODULE:
- case FUNCTION:
- register(decl.name, new Export(decl, true));
- break;
-
- case VAR:
- for (var i = 0; i < decl.children.length; i++)
- register(decl.children[i].name, new Export(decl.children[i], true));
- break;
-
- case LET:
- case CONST:
- throw new Error("NYI: " + definitions.tokens[decl.type]);
-
- case EXPORT:
- for (var i = 0; i < decl.pathList.length; i++) {
- var path = decl.pathList[i];
- switch (path.type) {
- case OBJECT_INIT:
- for (var j = 0; j < path.children.length; j++) {
- // init :: IDENTIFIER | PROPERTY_INIT
- var init = path.children[j];
- if (init.type === IDENTIFIER)
- register(init.value, new Export(init, false));
- else
- register(init.children[0].value, new Export(init.children[1], false));
- }
- break;
-
- case DOT:
- register(path.children[1].value, new Export(path, false));
- break;
-
- case IDENTIFIER:
- register(path.value, new Export(path, false));
- break;
-
- default:
- throw new Error("unexpected export path: " + definitions.tokens[path.type]);
- }
- }
- break;
-
- default:
- throw new Error("unexpected export decl: " + definitions.tokens[exp.type]);
- }
-}
-
-/*
- * Module :: (node) -> Module
- *
- * Static semantic representation of a module.
- */
-function Module(node) {
- var exports = node.body.exports;
- var modDefns = node.body.modDefns;
-
- var exportedModules = new Dict();
-
- exports.forEach(function(name, exp) {
- var node = exp.node;
- if (node.type === MODULE) {
- exportedModules.set(name, node);
- } else if (!exp.isDefinition && node.type === IDENTIFIER && modDefns.has(node.value)) {
- var mod = modDefns.get(node.value);
- exportedModules.set(name, mod);
- }
- });
-
- this.node = node;
- this.exports = exports;
- this.exportedModules = exportedModules;
-}
-
-/*
- * Statement :: () -> node
- *
- * Parses a Statement.
- */
-Pp.Statement = function Statement() {
- var i, label, n, n2, p, c, ss, tt = this.t.get(true), tt2, x0, x2, x3;
-
- var comments = this.t.blockComments;
-
- // Cases for statements ending in a right curly return early, avoiding the
- // common semicolon insertion magic after this switch.
- switch (tt) {
- case IMPORT:
- if (!this.x.canImport())
- this.fail("illegal context for import statement");
- n = this.newNode();
- n.pathList = this.ImportPathList();
- this.x.parentScript.impDecls.push(n);
- break;
-
- case EXPORT:
- if (!this.x.canExport())
- this.fail("export statement not in module top level");
- switch (this.peek()) {
- case MODULE:
- case FUNCTION:
- case LET:
- case VAR:
- case CONST:
- n = this.Statement();
- n.blockComments = comments;
- n.exported = true;
- this.x.parentScript.expDecls.push(n);
- registerExport(this.x.parentScript.exports, n);
- return n;
- }
- n = this.newNode();
- n.pathList = this.ExportPathList();
- this.x.parentScript.expDecls.push(n);
- registerExport(this.x.parentScript.exports, n);
- break;
-
- case FUNCTION:
- // DECLARED_FORM extends funDecls of x, STATEMENT_FORM doesn't.
- return this.FunctionDefinition(true, this.x.topLevel ? DECLARED_FORM : STATEMENT_FORM, comments);
-
- case LEFT_CURLY:
- n = this.newNode(blockInit());
- x2 = this.x.update({ parentBlock: n }).pushTarget(n).nest();
- this.withContext(x2, function() {
- this.Statements(n);
- });
- this.mustMatch(RIGHT_CURLY);
- return n;
-
- case IF:
- n = this.newNode();
- n.condition = this.HeadExpression();
- x2 = this.x.pushTarget(n).nest();
- this.withContext(x2, function() {
- n.thenPart = this.Statement();
- n.elsePart = this.match(ELSE, true) ? this.Statement() : null;
- });
- return n;
-
- case SWITCH:
- // This allows CASEs after a DEFAULT, which is in the standard.
- n = this.newNode({ cases: [], defaultIndex: -1 });
- n.discriminant = this.HeadExpression();
- x2 = this.x.pushTarget(n).nest();
- this.withContext(x2, function() {
- this.mustMatch(LEFT_CURLY);
- while ((tt = this.t.get()) !== RIGHT_CURLY) {
- switch (tt) {
- case DEFAULT:
- if (n.defaultIndex >= 0)
- this.fail("More than one switch default");
- // FALL THROUGH
- case CASE:
- n2 = this.newNode();
- if (tt === DEFAULT)
- n.defaultIndex = n.cases.length;
- else
- n2.caseLabel = this.Expression(COLON);
- break;
-
- default:
- this.fail("Invalid switch case");
- }
- this.mustMatch(COLON);
- n2.statements = this.newNode(blockInit());
- while ((tt=this.peek(true)) !== CASE && tt !== DEFAULT &&
- tt !== RIGHT_CURLY)
- n2.statements.push(this.Statement());
- n.cases.push(n2);
- }
- });
- return n;
-
- case FOR:
- n = this.newNode(LOOP_INIT);
- n.blockComments = comments;
- if (this.match(IDENTIFIER)) {
- if (this.t.token.value === "each")
- n.isEach = true;
- else
- this.t.unget();
- }
- if (!this.parenFreeMode)
- this.mustMatch(LEFT_PAREN);
- x2 = this.x.pushTarget(n).nest();
- x3 = this.x.update({ inForLoopInit: true });
- n2 = null;
- if ((tt = this.peek(true)) !== SEMICOLON) {
- this.withContext(x3, function() {
- if (tt === VAR || tt === CONST) {
- this.t.get();
- n2 = this.Variables();
- } else if (tt === LET) {
- this.t.get();
- if (this.peek() === LEFT_PAREN) {
- n2 = this.LetBlock(false);
- } else {
- // Let in for head, we need to add an implicit block
- // around the rest of the for.
- this.x.parentBlock = n;
- n.varDecls = [];
- n2 = this.Variables();
- }
- } else {
- n2 = this.Expression();
- }
- });
- }
- if (n2 && this.match(IN)) {
- n.type = FOR_IN;
- this.withContext(x3, function() {
- n.object = this.Expression();
- if (n2.type === VAR || n2.type === LET) {
- c = n2.children;
-
- // Destructuring turns one decl into multiples, so either
- // there must be only one destructuring or only one
- // decl.
- if (c.length !== 1 && n2.destructurings.length !== 1) {
- // FIXME: this.fail ?
- throw new SyntaxError("Invalid for..in left-hand side",
- this.filename, n2.lineno);
- }
- if (n2.destructurings.length > 0) {
- n.iterator = n2.destructurings[0];
- } else {
- n.iterator = c[0];
- }
- n.varDecl = n2;
- } else {
- if (n2.type === ARRAY_INIT || n2.type === OBJECT_INIT) {
- n2.destructuredNames = this.checkDestructuring(n2);
- }
- n.iterator = n2;
- }
- });
- } else {
- x3.inForLoopInit = false;
- n.setup = n2;
- this.mustMatch(SEMICOLON);
- if (n.isEach)
- this.fail("Invalid for each..in loop");
- this.withContext(x3, function() {
- n.condition = (this.peek(true) === SEMICOLON)
- ? null
- : this.Expression();
- this.mustMatch(SEMICOLON);
- tt2 = this.peek(true);
- n.update = (this.parenFreeMode
- ? tt2 === LEFT_CURLY || definitions.isStatementStartCode[tt2]
- : tt2 === RIGHT_PAREN)
- ? null
- : this.Expression();
- });
- }
- if (!this.parenFreeMode)
- this.mustMatch(RIGHT_PAREN);
- this.withContext(x2, function() {
- n.body = this.Statement();
- });
- return n;
-
- case WHILE:
- n = this.newNode({ isLoop: true });
- n.blockComments = comments;
- n.condition = this.HeadExpression();
- x2 = this.x.pushTarget(n).nest();
- this.withContext(x2, function() {
- n.body = this.Statement();
- });
- return n;
-
- case DO:
- n = this.newNode({ isLoop: true });
- n.blockComments = comments;
- x2 = this.x.pushTarget(n).next();
- this.withContext(x2, function() {
- n.body = this.Statement();
- });
- this.mustMatch(WHILE);
- n.condition = this.HeadExpression();
- //
- The mode can then be used like this:
var javascriptMode = require("ace/mode/javascript").Mode;
editor.getSession().setMode(new javascriptMode());
@@ -212,7 +210,7 @@ var css = new EditSession(["some", "css", "code here"]);
editor.setSession(js);
Common Operations
- Set and get content:`
+ Set and get content:
editor.setValue("the new text here"); // or session.setValue
editor.getValue(); // or session.getValue
@@ -470,60 +468,98 @@ tests for the highlighting.
style="position: relative; left: 19px; top: 2px;" />
RStudio
- Sky Edit
+ class="prod_no_image" />
+ Sky Edit
+
+
+
WaveMaker
+
Play My Code
+
Qooxdoo playground
+
Radiant CMS
+
Developer Companion
+
PythonAnywhere
+
shiftEdit
+
Akshell
+
beanstalk
+
Neutron IDE
+
Acebug
+
Weecod
+
RubyMonk
+
tmpltr
+
CMS Made Simple
+
Try Jasmine
+
Codebender
+
ShareLaTeX
From 4abcb89f19bf32346554eff42fe25eef52712faa Mon Sep 17 00:00:00 2001
From: C9
Date: Mon, 17 Sep 2012 02:08:01 -0400
Subject: [PATCH 025/165] Little link change for the site
---
doc/site/js/main.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/doc/site/js/main.js b/doc/site/js/main.js
index d2da9c35..0175a7b5 100644
--- a/doc/site/js/main.js
+++ b/doc/site/js/main.js
@@ -56,8 +56,10 @@ $(function() {
e.preventDefault();
embedded_editor.resize();
editor.resize();
- if ($(this).attr("href") === "/")
+ if ($(this).attr("href") === "/") {
+ window.location = "http://ace.ajax.org";
return;
+ }
if ($(this).attr("href").indexOf("#api") === 0) {
$("#top_container").addClass("collapse");
scrollIntoPosition(null, 0);
From b02ba2b3d03c990b8a3fc23e28c73beeb9feca55 Mon Sep 17 00:00:00 2001
From: Lennart Kats
Date: Thu, 13 Sep 2012 16:49:46 +0300
Subject: [PATCH 026/165] Add varargs console.log to worker
---
lib/ace/worker/worker.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js
index 2e1853df..102d8cd0 100644
--- a/lib/ace/worker/worker.js
+++ b/lib/ace/worker/worker.js
@@ -1,8 +1,8 @@
"no use strict";
var console = {
- log: function(msg) {
- postMessage({type: "log", data: msg});
+ log: function(msgs) {
+ postMessage({type: "log", data: arguments.join(" ")});
}
};
var window = {
From 4d2e0931db10dae89d3fc77104427693fd009296 Mon Sep 17 00:00:00 2001
From: Lennart Kats
Date: Thu, 13 Sep 2012 17:07:21 +0300
Subject: [PATCH 027/165] Add sanity check for require([module], function(){})
form
---
lib/ace/worker/worker.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js
index 102d8cd0..0e7270a3 100644
--- a/lib/ace/worker/worker.js
+++ b/lib/ace/worker/worker.js
@@ -30,6 +30,9 @@ var normalizeModule = function(parentId, moduleName) {
};
var require = function(parentId, id) {
+ if (!id.charAt)
+ throw new Error("worker.js require() accepts only (parentId, id) as arguments");
+
var id = normalizeModule(parentId, id);
var module = require.modules[id];
From 10fe461ba5d4010d6b37650869f0a0256cc47e04 Mon Sep 17 00:00:00 2001
From: C9
Date: Mon, 17 Sep 2012 09:40:48 -0400
Subject: [PATCH 028/165] Some updates
---
doc/site/js/main.js | 7 +++----
index.html | 17 ++++++-----------
2 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/doc/site/js/main.js b/doc/site/js/main.js
index 0175a7b5..8a1fd27a 100644
--- a/doc/site/js/main.js
+++ b/doc/site/js/main.js
@@ -4,10 +4,9 @@ $(function() {
hljs.initHighlighting();
editor = ace.edit("ace_editor_demo");
embedded_editor = ace.edit("embedded_ace_code");
- var javascriptMode = require("ace/mode/javascript").Mode;
- var htmlMode = require("ace/mode/html").Mode;
- editor.getSession().setMode(new javascriptMode());
- embedded_editor.getSession().setMode(new htmlMode());
+ editor.getSession().setMode("ace/mode/javascript");
+ editor.getSession().setMode("ace/mode/javascript");
+ embedded_editor.getSession().setMode("ace/mode/html");
$("ul.menu-list li").click(function(e) {
if (e.target.tagName === "LI") {
diff --git a/index.html b/index.html
index e1b27a1e..fbaad6ee 100644
--- a/index.html
+++ b/index.html
@@ -7,9 +7,7 @@
-
-
-
+
@@ -17,8 +15,6 @@
-
-
@@ -32,7 +28,7 @@
The high performance code editor for the web.
-
+
@@ -163,7 +159,7 @@ console.log(addResult);
return x;
}</div>
-<script src="https://s3.amazonaws.com/ajaxorg/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
+<script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
@@ -194,10 +190,9 @@ console.log(addResult);
Setting the Programming Language Mode
By default, the editor supports plain text mode. All other language modes are available as separate modules, loaded on demand like this:
- var javascriptMode = require("ace/mode/javascript").Mode;
-editor.getSession().setMode(new javascriptMode());
+ editor.getSession().setMode("ace/mode/javascript");
- One Editor, Multiple Sessions
+
Common Operations
Set and get content:
From ecf5d7dce263a93ffe0a7eceaec4a7028e6e274d Mon Sep 17 00:00:00 2001
From: C9
Date: Mon, 17 Sep 2012 11:52:56 -0400
Subject: [PATCH 029/165] Style updates
---
doc/site/style.css | 4 ++++
index.html | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/doc/site/style.css b/doc/site/style.css
index 11e8eaec..273a9f5b 100644
--- a/doc/site/style.css
+++ b/doc/site/style.css
@@ -5,6 +5,10 @@ body {
font-family: Helvetica, Arial;
}
+#embed_ace_wrapper {
+ height: 525px;
+}
+
.ace_editor_wrapper {
height: 275px;
position: relative;
diff --git a/index.html b/index.html
index fbaad6ee..46030236 100644
--- a/index.html
+++ b/index.html
@@ -137,7 +137,7 @@ console.log(addResult);
Embedding ACE in Your Site
ACE can be easily embedded into a web page:
-
+
<!DOCTYPE html>
<html lang="en">
<head>
@@ -162,7 +162,7 @@ console.log(addResult);
<script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var editor = ace.edit("editor");
- editor.setTheme("ace/theme/twilight");
+ editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/javascript");
</script>
</body>
From a50afaa62ffada100e6219702b736949b2c62fe3 Mon Sep 17 00:00:00 2001
From: C9
Date: Mon, 17 Sep 2012 12:52:45 -0400
Subject: [PATCH 030/165] Added website to list of prod apps
---
index.html | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/index.html b/index.html
index 46030236..7c4e77a9 100644
--- a/index.html
+++ b/index.html
@@ -498,6 +498,11 @@ tests for the highlighting.
class="prod_no_image" />
PythonAnywhere
+
+
+ Application Craft
+
From bcbdd41751a07094c99756b3a075fb9b12319c55 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Mon, 17 Sep 2012 11:27:46 -0700
Subject: [PATCH 031/165] Site tweaks
---
api/resources/csses/ace_api.css | 13 +++++++++++--
api/resources/javascripts/disqus-ext.js | 12 +++++-------
doc/resources/ace/skeleton/csses/ace_api.css | 13 +++++++++++--
doc/site/js/main.js | 9 +++++++--
doc/site/style.css | 1 +
index.html | 6 +++---
6 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/api/resources/csses/ace_api.css b/api/resources/csses/ace_api.css
index f849dcf7..1a974a02 100644
--- a/api/resources/csses/ace_api.css
+++ b/api/resources/csses/ace_api.css
@@ -147,6 +147,11 @@ form.navbar-search {
form.navbar-search .search-query {
background-color: #FFFFFF;
+ border: none;
+}
+
+.navbar-search .search-query:focus, .navbar-search .search-query.focused {
+ padding: 4px 9px;
}
h3.api_title {
@@ -281,9 +286,14 @@ ul.menu {
.srolled .membersContent {
/*top : 0;*/
width: 625px;
- padding-left: 330px;
+ padding-left: 327px;
margin : 0 auto 0 auto;
}
+
+.srolled ul.nav {
+ padding-right: 10px;
+}
+
.membersBackground {
/* background-color: white;
position: fixed;
@@ -492,7 +502,6 @@ header.filler {
}
.centerpiece {
- background: url(../images/sidebar_border.png) repeat-y 230px 0;
min-height: 100%;
}
diff --git a/api/resources/javascripts/disqus-ext.js b/api/resources/javascripts/disqus-ext.js
index 66da8bfc..67212a3f 100644
--- a/api/resources/javascripts/disqus-ext.js
+++ b/api/resources/javascripts/disqus-ext.js
@@ -11,12 +11,10 @@ function setupDisqus() {
var disqus_identifier = "api/" + (lochash.substr(lochash.indexOf('api=')).split('&')[0].split('=')[1] || "index") + ".html";
(function() {
- if (document.getElementById(dsqId))
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).removeChild(document.getElementById(dsqId));
-
- var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
- dsq.id="disqusScript";
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ if (document.getElementById(dsqId) === null) {
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+ dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ }
})();
}
\ No newline at end of file
diff --git a/doc/resources/ace/skeleton/csses/ace_api.css b/doc/resources/ace/skeleton/csses/ace_api.css
index f849dcf7..1a974a02 100644
--- a/doc/resources/ace/skeleton/csses/ace_api.css
+++ b/doc/resources/ace/skeleton/csses/ace_api.css
@@ -147,6 +147,11 @@ form.navbar-search {
form.navbar-search .search-query {
background-color: #FFFFFF;
+ border: none;
+}
+
+.navbar-search .search-query:focus, .navbar-search .search-query.focused {
+ padding: 4px 9px;
}
h3.api_title {
@@ -281,9 +286,14 @@ ul.menu {
.srolled .membersContent {
/*top : 0;*/
width: 625px;
- padding-left: 330px;
+ padding-left: 327px;
margin : 0 auto 0 auto;
}
+
+.srolled ul.nav {
+ padding-right: 10px;
+}
+
.membersBackground {
/* background-color: white;
position: fixed;
@@ -492,7 +502,6 @@ header.filler {
}
.centerpiece {
- background: url(../images/sidebar_border.png) repeat-y 230px 0;
min-height: 100%;
}
diff --git a/doc/site/js/main.js b/doc/site/js/main.js
index e4f78ffc..e206f413 100644
--- a/doc/site/js/main.js
+++ b/doc/site/js/main.js
@@ -39,7 +39,7 @@ $(function() {
$("li#dropdown_" + section.replace(/\./g, '\\.') + " a").triggerHandler('click');
}
- setupDisqus();
+ // setupDisqus();
});
}
@@ -66,6 +66,10 @@ $(function() {
});
});
+ $('a.external').click(function(e) {
+ e.preventDefault();
+ });
+
var tabs = $("#tabnav"),
tab_a_selector = "a";
@@ -118,7 +122,8 @@ $(function() {
$(window).on("hashchange", function(e) {
tabs.each(function() {
var idx = $.bbq.getState("nav") || "about";
- $(this).find(tab_a_selector + "[href='#" + idx + "']").triggerHandler('click');
+ var section = e.fragment.split("&")[1] || "";
+ $(this).find(tab_a_selector + "[href='#" + idx + "&" + section + "']").triggerHandler('click');
// handles dropping in from new link
var api = $.bbq.getState("api");
diff --git a/doc/site/style.css b/doc/site/style.css
index 40118ed5..5bb9a900 100644
--- a/doc/site/style.css
+++ b/doc/site/style.css
@@ -49,6 +49,7 @@ H3 {
H4 {
font-size:21px;
color:#222222;
+ margin-bottom:8px;
}
P {
diff --git a/index.html b/index.html
index 90dceff1..6406d8bb 100644
--- a/index.html
+++ b/index.html
@@ -90,8 +90,8 @@ console.log(addResult);
kitchen sink .
ACE Features
- Syntax highlighting for over 40 languages (TextMate/Sublime/.tmlanguage files can be imported)
- Over 20 themes (TextMate/Sublime/.tmtheme files can be imported)
+ Syntax highlighting for over 40 languages (TextMate/Sublime/.tmlanguage files can be imported )
+ Over 20 themes (TextMate/Sublime/.tmtheme files can be imported )
Automatic indent and outdent
An optional command line
Handles huge documents (at last check, 4,000,000 lines is the upper limit)
@@ -344,7 +344,7 @@ editor.replace('bar');
//...
}
});
- Importing Themes and Languages
+ Importing Themes and Languages
ACE supports the importing of .tmtheme and .tmlanguage files for use
in the editor. The task is accomplished by two simple node scripts.
From 844c37fda935d819d1e1f24c2a638b93a20f7c78 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Mon, 17 Sep 2012 12:36:40 -0700
Subject: [PATCH 032/165] Few more tweaks
---
api/editor.html | 6 ++-
api/resources/javascripts/disqus-ext.js | 4 +-
.../ace/skeleton/javascripts/clicker.js | 2 +-
doc/site/images/ac-logo.png | Bin 0 -> 2662 bytes
index.html | 45 ++----------------
5 files changed, 12 insertions(+), 45 deletions(-)
create mode 100644 doc/site/images/ac-logo.png
diff --git a/api/editor.html b/api/editor.html
index a7798f30..f2493025 100644
--- a/api/editor.html
+++ b/api/editor.html
@@ -1,4 +1,4 @@
-
The main entry point into the Ace functionality. The Editor manages the EditSession (which manages Documents), as well as the VirtualRenderer, which draws everything to the screen. Event sessions dealing with the mouse and keyboard are bubbled up from Document to the Editor, which decides what to do with them.
+
The main entry point into the Ace functionality. The Editor manages the EditSession (which manages Documents), as well as the VirtualRenderer, which draws everything to the screen. Event sessions dealing with the mouse and keyboard are bubbled up from Document to the Editor, which decides what to do with them.
Creates a new Editor object.
Creates a new Editor object.
Arguments renderer VirtualRenderer Required. Associated VirtualRenderer that draws everything
@@ -35,7 +35,9 @@
Editor. $updateHighlightActiveLine ( )Editor. addSelectionMarker (Range orientedRange )Adds the selection and cursor.
Adds the selection and cursor.
Arguments orientedRange Range Required. A range containing a cursor
-
Outdents the current line.
+
aligns cursors or selected text
+
aligns cursors or selected text
+
Outdents the current line.
Outdents the current line.
Blurs the current textInput.
Blurs the current textInput.
diff --git a/api/resources/javascripts/disqus-ext.js b/api/resources/javascripts/disqus-ext.js
index 01eef605..6bb7ff4e 100644
--- a/api/resources/javascripts/disqus-ext.js
+++ b/api/resources/javascripts/disqus-ext.js
@@ -9,9 +9,9 @@ function setupDisqus(href) {
(function() {
if (document.getElementById("disqusScript") === null) {
- var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}
})();
}
\ No newline at end of file
diff --git a/doc/resources/ace/skeleton/javascripts/clicker.js b/doc/resources/ace/skeleton/javascripts/clicker.js
index ddffe520..b5a86168 100644
--- a/doc/resources/ace/skeleton/javascripts/clicker.js
+++ b/doc/resources/ace/skeleton/javascripts/clicker.js
@@ -58,7 +58,7 @@ function setupClicker() {
// for the top dropdown
$('li.memberLink a').click(transformHash);
- $('a[href^="#"]').click(transformHash);
+ //$('a[href^="#"]').click(transformHash);
$('.related-to', '.metaInfo').click(function(){
location.hash = $(this).find('a').attr('href').split('#')[1];
diff --git a/doc/site/images/ac-logo.png b/doc/site/images/ac-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ca069a37c6a87d6169e44e37244efd024f1eebf
GIT binary patch
literal 2662
zcmV-s3YqnZP)
(_`g8%^e{{R4h=l}px2mk>USO5SzmjD14Z`WEM
zkN^M)>`6pHRCwClntN~+)g8w_XLs+tNk|B=gq|s6yr51Sv2*f~=d$W5_|JdJ!
zb=lo}ZxXH3@66`joOA9uXV3Td-c?p2K>!v5mB2Id|2Ke}fxW;qpb3}*^aWM{&jS5{
zdw?GTHlSq8GGGhP2bd2u13vmz%tmi+@@CzDM6UQeda?aBTzFD
z^KLn?wZKXl(+IpGH&FoG2Bd+{$y|OiX2=yI7`uSEvKKGL2!T!hADm9AAp^>rN7gr~
z+FggO>E%WmLxEv{p+G5xVS!46QlQWnhJs*1YJkUs$oQIkb`@#g1?(0Hd_xWm-~`Ye
zSPC=%3DKOSXRZUlVL61}KtI6o^pBIz(SQYP0A7-|?eck0<^Z@z_5qN&D+_oJxLl-v
zzwdq~0Y4=g`+-vd?ZahnEBzf#nkLI&*0p_7ciCyi?x~5b=w9le(11cKEkZAU6`(bi
zQl71Y2-yvQHhgOo0(Stv6jgml+WP}1f$<`l329p)#1uR!
z>zpT2_lOYnP5Di4xiTo13lWA*aswNsZGdRpT%es#`V}yn>}VI!SDN`!Qfd;9DblXA
z*C%a7%I4|eeN)AKyETtJTxZgdR3vSXK2nY%ghs1R|XXO1brAAq-oe7tsA@LeGh
zk)S8#knfSUExiaJJ)X;00e=Ce$m
zFO7EI2<|D
zOhMtfN0%WaX|rT#pHxBbGW#os>kJx_il!8mcAC+OU?PIZm<>EHA!0u0FX7*`h%rA9
ziM=d``Mxhv*{~Lxzu$TjM%fP9(Fz?xhu2Kal1#QWcuds(319nHB?`&~%Yjaw9K?^Kz;XHB
zMXn&+4=l=Iy_a(cZ!;(T0;FkdNMo8RVpzt9sKtXnlX|dYQF>I|gu=KcZb8h{D5cL)
z5yKO9&djov8VNy@|B>Fb(P1Y
zMFlfWz)~k=PwUX7fWgi{C~NzzRsv3jM@U~#27D0se8gczfE49|MYt)tN-Eh1eES5jaCeP#9b7sg!2J2C0nR;mHS-
zEF9)js&kmPgV^@FB7Dv#id0hLIJ%`;u}REnDvFGtDB?t(3oVq(k697sCR+(+1MUN<
zY&a~>F#3OrYh;_V5s`^Fg0k@Q+h`MEN}VmEUKT-wBM$yq34t$?YQd)!TXG>HqZ#!9
zA>er;orhYv5#55{43e^jAE(4@y%3ODe
z|3{KEJfwX*@bi!oM%*4V5A!xsvgENZ+)O`2FKX=YY2Nai2ki
zVN^g{17{zGwFVA=GGeS+R?E)qrzz`ZWh3RSd^EyK#^MOOz8?4OjjMBTx^0D^+boJ0
ze@lp2`xov@6s?8(JR@#Ue=^B)&(zYPvxN?4W2*>pGT(&^-16}9h%r-fUw_#rS!=G>
z<1N{crwHgp7u+JGKO&nVWsM-L&c{SVU;<#GUF}%0)VJ7BZ7=4kOE!^
zVaiiY7||9c(Vy_`mB{3FQS)Rg=I)H=og*KLv;4Li_uZ?Fd91gAv#;`;Ne%K?|0HlL
zZYe*iGLS(}(c-+Lrfg=)kLTp-F1G&?NvxW4oVQRCo?5xN)4qdPo5LJcVuQbcTc#g~
z`VE_OC07*qoM6N<$f*oYr9{>OV
literal 0
HcmV?d00001
diff --git a/index.html b/index.html
index 4d9c50c2..c5860a0a 100644
--- a/index.html
+++ b/index.html
@@ -464,104 +464,69 @@ tests for the highlighting.
RStudio
-
Sky Edit
-
WaveMaker
-
Play My Code
-
Qooxdoo playground
-
Radiant CMS
-
Developer Companion
-
PythonAnywhere
-
+
Application Craft
-
shiftEdit
-
Akshell
-
beanstalk
-
Neutron IDE
-
Acebug
-
Weecod
-
RubyMonk
-
tmpltr
-
CMS Made Simple
-
Try Jasmine
-
Codebender
-
ShareLaTeX
+
+ Fine Cut Engine
+
+
Your Site Here
From b006c820b90e4927f79206ec1ce4cb22ed4546ff Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Mon, 17 Sep 2012 12:51:57 -0700
Subject: [PATCH 033/165] Remove links, rearrange icons
---
index.html | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/index.html b/index.html
index c5860a0a..874adfcb 100644
--- a/index.html
+++ b/index.html
@@ -86,8 +86,8 @@ console.log(addResult);
kitchen sink .
ACE Features
- Syntax highlighting for over 40 languages (TextMate/Sublime/.tmlanguage files can be imported )
- Over 20 themes (TextMate/Sublime/.tmtheme files can be imported )
+ Syntax highlighting for over 40 languages (TextMate/Sublime/.tmlanguage files can be imported)
+ Over 20 themes (TextMate/Sublime/.tmtheme files can be imported)
Automatic indent and outdent
An optional command line
Handles huge documents (at last check, 4,000,000 lines is the upper limit)
@@ -463,6 +463,11 @@ tests for the highlighting.
style="position: relative; left: 19px; top: 2px;" />
RStudio
+
+
+ Application Craft
+
Sky Edit
@@ -484,11 +489,6 @@ tests for the highlighting.
PythonAnywhere
-
-
- Application Craft
-
shiftEdit
From 119ab08977d1d8c80fd854951cbbff115790bf0c Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Mon, 17 Sep 2012 13:00:45 -0700
Subject: [PATCH 034/165] Fix site expansion
---
doc/site/js/main.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/site/js/main.js b/doc/site/js/main.js
index 353eb56e..6bfad39f 100644
--- a/doc/site/js/main.js
+++ b/doc/site/js/main.js
@@ -105,7 +105,7 @@ $(function() {
tabs.each(function() {
var idx = $.bbq.getState("nav") || "about";
var section = e.fragment.split("&")[1] || "";
- $(this).find(tab_a_selector + "[href='#" + idx + "&" + section + "']").triggerHandler('click');
+ $(this).find(tab_a_selector + "[href='#" + idx + "']").triggerHandler('click');
// handles dropping in from new link
var api = $.bbq.getState("api");
From 04e3e2ca599b7924fff82034cd863e8fe13e46ed Mon Sep 17 00:00:00 2001
From: Matt
Date: Mon, 17 Sep 2012 14:23:55 -0700
Subject: [PATCH 035/165] Update Readme.md
---
Readme.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Readme.md b/Readme.md
index f9ec20d1..7960e48c 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,6 +1,8 @@
Ace (Ajax.org Cloud9 Editor)
============================
+_Note_: The new site at http://ace.ajax.org contains all the info below along with an embedding guide and all the other resources you need to get started with Ace.
+
Ace is a standalone code editor written in JavaScript. Our goal is to create a browser based editor that matches and extends the features, usability and performance of existing native editors such as TextMate, Vim or Eclipse. It can be easily embedded in any web page or JavaScript application. Ace is developed as the primary editor for [Cloud9 IDE](http://www.cloud9ide.com/) and the successor of the Mozilla Skywriter (Bespin) Project.
Features
From eb744d58fc2966e10926ef1522fc36565c6aaf21 Mon Sep 17 00:00:00 2001
From: C9
Date: Mon, 17 Sep 2012 18:27:28 -0400
Subject: [PATCH 036/165] Content and style updates
---
api/editor.html | 6 ++--
api/resources/csses/ace_api.css | 31 +++++++++++++++----
api/resources/javascripts/clicker.js | 7 +++--
doc/resources/ace/skeleton/csses/ace_api.css | 31 +++++++++++++++----
.../ace/skeleton/javascripts/clicker.js | 5 ++-
doc/site/style.css | 6 +++-
6 files changed, 68 insertions(+), 18 deletions(-)
diff --git a/api/editor.html b/api/editor.html
index a7798f30..f2493025 100644
--- a/api/editor.html
+++ b/api/editor.html
@@ -1,4 +1,4 @@
-
The main entry point into the Ace functionality. The Editor manages the EditSession (which manages Documents), as well as the VirtualRenderer, which draws everything to the screen. Event sessions dealing with the mouse and keyboard are bubbled up from Document to the Editor, which decides what to do with them.
+
The main entry point into the Ace functionality. The Editor manages the EditSession (which manages Documents), as well as the VirtualRenderer, which draws everything to the screen. Event sessions dealing with the mouse and keyboard are bubbled up from Document to the Editor, which decides what to do with them.
Creates a new Editor object.
Creates a new Editor object.
Arguments renderer VirtualRenderer Required. Associated VirtualRenderer that draws everything
@@ -35,7 +35,9 @@
Editor. $updateHighlightActiveLine ( )Editor. addSelectionMarker (Range orientedRange )Adds the selection and cursor.
Adds the selection and cursor.
Arguments orientedRange Range Required. A range containing a cursor
-
Outdents the current line.
+
aligns cursors or selected text
+
aligns cursors or selected text
+
Outdents the current line.
Outdents the current line.
Blurs the current textInput.
Blurs the current textInput.
diff --git a/api/resources/csses/ace_api.css b/api/resources/csses/ace_api.css
index f849dcf7..f28658cc 100644
--- a/api/resources/csses/ace_api.css
+++ b/api/resources/csses/ace_api.css
@@ -147,6 +147,16 @@ form.navbar-search {
form.navbar-search .search-query {
background-color: #FFFFFF;
+ border-color: #999;
+ -webkit-transition: border 0.3s;
+ -moz-transition: border 0.3s;
+ font-size: 14px;
+ line-height: 16px;
+}
+
+form.navbar-search .search-query:focus, form.navbar-search .search-query:active {
+ border: 1px solid #666;
+ padding: 4px 9px;
}
h3.api_title {
@@ -154,24 +164,28 @@ h3.api_title {
}
ul.menu {
- margin-left: 16px;
+ margin-left: 2px;
}
.menu li {
list-style-image: url(../images/menu_disc.png);
- margin-bottom: 3px;
- font-weight : 700;
+ margin-bottom: 4px;
+ font-weight: 700;
+ padding-left: 10px;
+ margin-left: 0;
}
.menu li .menu-item a.menuLink, .menu li .menu-item span.menuLink {
- color: #262626;
+ color: #3E7096;
+ font-weight: 100;
}
.menuTwo {
margin-bottom: 5px;
margin-top: 2px;
}
.menuTwo li .menu-item a.menuLink {
- color: #262626;
+ color: #3E7096;
+ font-weight: 100;
}
/* need specificity to "beat" the above colors */
@@ -494,6 +508,7 @@ header.filler {
.centerpiece {
background: url(../images/sidebar_border.png) repeat-y 230px 0;
min-height: 100%;
+ padding: 10px 0;
}
/*
@@ -535,6 +550,9 @@ header.filler {
#documentation article.article {
border-top: 1px solid #e9e9e9;
padding: 16px 10px 2px;
+ -webkit-transition: padding 0.2s;
+ -moz-transition: padding 0.2s;
+ -o-transition: padding 0.2s;
}
#documentation h3.sectionHeader + article.article {
@@ -781,7 +799,7 @@ li.signature {
#documentation i.methodToggle {
cursor: pointer;
color: #9f9f9f;
- padding-top: 5px;
+ padding-top: 2px;
float: left;
}
#documentation i.methodToggle.methodToggleHover {
@@ -802,6 +820,7 @@ li.signature {
/* Opera */
-o-transform: rotate(45deg);
+ padding-top: 9px;
}
#documentation h3.sectionHeader {
diff --git a/api/resources/javascripts/clicker.js b/api/resources/javascripts/clicker.js
index b5a86168..d37cf253 100644
--- a/api/resources/javascripts/clicker.js
+++ b/api/resources/javascripts/clicker.js
@@ -28,7 +28,10 @@ function setupClicker() {
if (!$article.hasClass('methodToggleOpen') || this.force) {
$article.addClass('methodToggleOpen');
$arrow.removeClass('inactive').addClass('active');
-
+
+ if (!$arrow[0])
+ return;
+
var data = $arrow[0].id.replace(/^js_/, "");
//var state = {};
//state.section = data;
@@ -58,7 +61,7 @@ function setupClicker() {
// for the top dropdown
$('li.memberLink a').click(transformHash);
- //$('a[href^="#"]').click(transformHash);
+ $('a[href^="#"]').click(transformHash);
$('.related-to', '.metaInfo').click(function(){
location.hash = $(this).find('a').attr('href').split('#')[1];
diff --git a/doc/resources/ace/skeleton/csses/ace_api.css b/doc/resources/ace/skeleton/csses/ace_api.css
index f849dcf7..f28658cc 100644
--- a/doc/resources/ace/skeleton/csses/ace_api.css
+++ b/doc/resources/ace/skeleton/csses/ace_api.css
@@ -147,6 +147,16 @@ form.navbar-search {
form.navbar-search .search-query {
background-color: #FFFFFF;
+ border-color: #999;
+ -webkit-transition: border 0.3s;
+ -moz-transition: border 0.3s;
+ font-size: 14px;
+ line-height: 16px;
+}
+
+form.navbar-search .search-query:focus, form.navbar-search .search-query:active {
+ border: 1px solid #666;
+ padding: 4px 9px;
}
h3.api_title {
@@ -154,24 +164,28 @@ h3.api_title {
}
ul.menu {
- margin-left: 16px;
+ margin-left: 2px;
}
.menu li {
list-style-image: url(../images/menu_disc.png);
- margin-bottom: 3px;
- font-weight : 700;
+ margin-bottom: 4px;
+ font-weight: 700;
+ padding-left: 10px;
+ margin-left: 0;
}
.menu li .menu-item a.menuLink, .menu li .menu-item span.menuLink {
- color: #262626;
+ color: #3E7096;
+ font-weight: 100;
}
.menuTwo {
margin-bottom: 5px;
margin-top: 2px;
}
.menuTwo li .menu-item a.menuLink {
- color: #262626;
+ color: #3E7096;
+ font-weight: 100;
}
/* need specificity to "beat" the above colors */
@@ -494,6 +508,7 @@ header.filler {
.centerpiece {
background: url(../images/sidebar_border.png) repeat-y 230px 0;
min-height: 100%;
+ padding: 10px 0;
}
/*
@@ -535,6 +550,9 @@ header.filler {
#documentation article.article {
border-top: 1px solid #e9e9e9;
padding: 16px 10px 2px;
+ -webkit-transition: padding 0.2s;
+ -moz-transition: padding 0.2s;
+ -o-transition: padding 0.2s;
}
#documentation h3.sectionHeader + article.article {
@@ -781,7 +799,7 @@ li.signature {
#documentation i.methodToggle {
cursor: pointer;
color: #9f9f9f;
- padding-top: 5px;
+ padding-top: 2px;
float: left;
}
#documentation i.methodToggle.methodToggleHover {
@@ -802,6 +820,7 @@ li.signature {
/* Opera */
-o-transform: rotate(45deg);
+ padding-top: 9px;
}
#documentation h3.sectionHeader {
diff --git a/doc/resources/ace/skeleton/javascripts/clicker.js b/doc/resources/ace/skeleton/javascripts/clicker.js
index ddffe520..d37cf253 100644
--- a/doc/resources/ace/skeleton/javascripts/clicker.js
+++ b/doc/resources/ace/skeleton/javascripts/clicker.js
@@ -28,7 +28,10 @@ function setupClicker() {
if (!$article.hasClass('methodToggleOpen') || this.force) {
$article.addClass('methodToggleOpen');
$arrow.removeClass('inactive').addClass('active');
-
+
+ if (!$arrow[0])
+ return;
+
var data = $arrow[0].id.replace(/^js_/, "");
//var state = {};
//state.section = data;
diff --git a/doc/site/style.css b/doc/site/style.css
index 273a9f5b..8f68d36d 100644
--- a/doc/site/style.css
+++ b/doc/site/style.css
@@ -473,5 +473,9 @@ p.highlight_note a {
}
#sidebarContainer {
- margin: 0 20px 0 0;
+ margin: 3px 20px 0 15px;
+}
+
+#api {
+ padding: 0;
}
\ No newline at end of file
From a68ec0b346d52c68e2fb3baa0af34fb099cb4055 Mon Sep 17 00:00:00 2001
From: quexer
Date: Tue, 18 Sep 2012 15:46:36 +0800
Subject: [PATCH 037/165] update license block
---
lib/ace/mode/markdown_highlight_rules_test.js | 50 +++++++++----------
1 file changed, 24 insertions(+), 26 deletions(-)
diff --git a/lib/ace/mode/markdown_highlight_rules_test.js b/lib/ace/mode/markdown_highlight_rules_test.js
index 2097e60b..4c828e49 100644
--- a/lib/ace/mode/markdown_highlight_rules_test.js
+++ b/lib/ace/mode/markdown_highlight_rules_test.js
@@ -1,37 +1,35 @@
/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ * Distributed under the BSD license:
*
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
+ * Copyright (c) 2012, Ajax.org B.V.
+ * All rights reserved.
*
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
+ * 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.
*
- * The Original Code is Ajax.org Code Editor (ACE).
+ * 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.
*
- * The Initial Developer of the Original Code is
- * Ajax.org B.V.
- * Portions created by the Initial Developer are Copyright (C) 2010
- * the Initial Developer. All Rights Reserved.
*
* Contributor(s):
- * quexer
*
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
+ * quexer
*
* ***** END LICENSE BLOCK ***** */
From 4017abd825293656505b56c3ba966c81edc76112 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Tue, 11 Sep 2012 17:05:36 -0700
Subject: [PATCH 038/165] Make updates to theme parser logic and tool
---
tool/Theme.tmpl.css | 32 +++++++++++++-
tool/package.json | 4 +-
tool/tmtheme.js | 102 ++++++++++++++++++++++++++++++++++++--------
3 files changed, 117 insertions(+), 21 deletions(-)
diff --git a/tool/Theme.tmpl.css b/tool/Theme.tmpl.css
index 8b52ef83..6bb17908 100644
--- a/tool/Theme.tmpl.css
+++ b/tool/Theme.tmpl.css
@@ -77,18 +77,26 @@
%keyword.operator%
}
+.%cssClass% .ace_keyword.ace_other.ace_unit {
+ %keyword.other.unit%
+}
+
.%cssClass% .ace_constant, .%cssClass% .ace_constant.ace_other {
%constant%
}
-.%cssClass% .ace_constant.ace_character {
+.%cssClass% .ace_constant.ace_character {
%constant.character%
}
-.%cssClass% .ace_constant.ace_character.ace_escape {
+.%cssClass% .ace_constant.ace_character.ace_escape {
%constant.character.escape%
}
+.%cssClass% .ace_constant.ace_character.ace_entity {
+ %constant.character.entity%
+}
+
.%cssClass% .ace_constant.ace_language {
%constant.language%
}
@@ -105,6 +113,10 @@
%constant.other%
}
+.%cssClass% .ace_constant.ace_other.ace_color {
+ %constant.other.color%
+}
+
.%cssClass% .ace_invalid {
%invalid%
}
@@ -125,6 +137,10 @@
%support.constant%
}
+.%cssClass% support.constant.property-value {
+ %support.constant.property-value%
+}
+
.%cssClass% .ace_fold {
background-color: %fold%;
border-color: %foreground%;
@@ -210,6 +226,10 @@
%ace.meta.tag.input%
}
+.%cssClass% .ace_meta.ace_selector {
+ %meta.selector%
+}
+
.%cssClass% .ace_entity.ace_other.ace_attribute-name {
%entity.other.attribute-name%
}
@@ -222,6 +242,14 @@
%entity.name.function%
}
+.%cssClass% .ace_entity.ace_other.ace_inherited-class {
+ %entity.other.inherited-class%
+}
+
+.%cssClass% .ace_entity.ace_name.ace_tag {
+ %entity.name.tag%
+}
+
.%cssClass% .ace_markup.ace_underline {
text-decoration:underline;
}
diff --git a/tool/package.json b/tool/package.json
index c576aff2..a96e830d 100644
--- a/tool/package.json
+++ b/tool/package.json
@@ -2,6 +2,8 @@
"name": "ace-tools",
"version": "0.1.0",
"dependencies": {
- "plist": ""
+ "plist": "",
+ "css-parse": "",
+ "css-stringify": ""
}
}
diff --git a/tool/tmtheme.js b/tool/tmtheme.js
index fca5453b..81104f0e 100755
--- a/tool/tmtheme.js
+++ b/tool/tmtheme.js
@@ -1,4 +1,8 @@
var fs = require("fs");
+var path = require("path");
+var util = require("util");
+var cssParse = require("css-parse");
+var cssStringify = require("css-stringify");
var parseString = require("plist").parseString;
function parseTheme(themeXml, callback) {
@@ -7,6 +11,8 @@ function parseTheme(themeXml, callback) {
});
}
+var unsupportedScopes = { };
+
var supportedScopes = {
"keyword": "keyword",
"keyword.operator": "keyword.operator",
@@ -90,22 +96,34 @@ function extractStyles(theme) {
};
for (var i=1; i 0) {
+ if (unsupportedScopes[scope] === undefined) {
+ unsupportedScopes[scope] = 1;
+ }
+ else {
+ unsupportedScopes[scope] = unsupportedScopes[scope] + 1;
+ }
}
+ }
}
- if (!colors.fold)
- colors.fold = ((colors["entity.name.function"] || colors.keyword).match(/\:([^;]+)/)||[])[1];
+ if (!colors.fold) {
+ var foldSource = colors["entity.name.function"] || colors.keyword;
+ if (foldSource) {
+ colors.fold = foldSource.match(/\:([^;]+)/)[1];
+ }
+ }
if (!colors.selected_word_highlight)
colors.selected_word_highlight = "border: 1px solid " + colors.selection + ";";
@@ -178,7 +196,7 @@ var cssTemplate = fs.readFileSync(__dirname + "/Theme.tmpl.css", "utf8");
var jsTemplate = fs.readFileSync(__dirname + "/Theme.tmpl.js", "utf8");
var themes = {
- //"chrome": "Chrome",
+ //"chrome": "Chrome DevTools",
"clouds": "Clouds",
"clouds_midnight": "Clouds Midnight",
"cobalt": "Cobalt",
@@ -196,14 +214,15 @@ var themes = {
"pastel_on_dark": "Pastels on Dark",
"solarized_dark": "Solarized-dark",
"solarized_light": "Solarized-light",
- //"textmate": "Textmate",
+ //"textmate": "Textmate (Mac Classic)",
"tomorrow": "Tomorrow",
"tomorrow_night": "Tomorrow-Night",
"tomorrow_night_blue": "Tomorrow-Night-Blue",
"tomorrow_night_bright": "Tomorrow-Night-Bright",
"tomorrow_night_eighties": "Tomorrow-Night-Eighties",
"twilight": "Twilight",
- "vibrant_ink": "Vibrant Ink"
+ "vibrant_ink": "Vibrant Ink",
+ "xcode": "Xcode_default"
};
function convertTheme(name) {
@@ -224,10 +243,57 @@ function convertTheme(name) {
isDark: styles.isDark
});
+ // we're going to look for NEW rules in the parsed content only
+ // if such a rule exists, add it to the destination file
+ // this way, we preserve all hand-modified rules in the .css rules,
+ // (because some exist, for collab1 and ace_indentation_guide
+ try {
+ var outThemeCss = fs.readFileSync(__dirname + "/../lib/ace/theme/" + name + ".css");
+ var parsedExistingFile = cssParse(outThemeCss);
+ var parsedPotentialFile = cssParse(css);
+
+
+ for (var r = 0; r < parsedPotentialFile.stylesheet.rules.length; r++) {
+ var potentialSelectors = parsedPotentialFile.stylesheet.rules[r].selectors;
+ var found = false;
+
+ for (var e = 0; e < parsedExistingFile.stylesheet.rules.length; e++) {
+ var existingSelectors = parsedExistingFile.stylesheet.rules[e].selectors;
+
+ if (existingSelectors.join(",") === potentialSelectors.join(",")) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ console.log("Adding NEW rule: ", parsedPotentialFile.stylesheet.rules[r])
+ parsedExistingFile.stylesheet.rules.splice(r, 0, parsedPotentialFile.stylesheet.rules[r]);
+ }
+ }
+ css = cssStringify(parsedExistingFile, { compress: false });
+ } catch(e) {
+ console.log("Creating new file: " + name + ".css")
+ }
+
fs.writeFileSync(__dirname + "/../lib/ace/theme/" + name + ".js", js);
fs.writeFileSync(__dirname + "/../lib/ace/theme/" + name + ".css", css);
})
}
-for (var name in themes)
- convertTheme(name);
\ No newline at end of file
+for (var name in themes) {
+ convertTheme(name);
+}
+
+var sortedUnsupportedScopes = {};
+for (var u in unsupportedScopes) {
+ var value = unsupportedScopes[u];
+ if (sortedUnsupportedScopes[value] === undefined) {
+ sortedUnsupportedScopes[value] = [];
+ }
+ sortedUnsupportedScopes[value].push(u);
+}
+
+console.log("I found these unsupported scopes:");
+console.log(sortedUnsupportedScopes);
+console.log("It's safe to ignore these, but they may affect your syntax highlighting if your mode depends on any of these rules.");
+console.log("Refer to the docs on ace.ajax.org for information on how to add a scope to the CSS generator.");
\ No newline at end of file
From 2e55b85a9745861db0ffa4cfe618d9c992f32647 Mon Sep 17 00:00:00 2001
From: nightwing
Date: Tue, 18 Sep 2012 20:02:05 +0400
Subject: [PATCH 039/165] regenerate all themes
---
lib/ace/theme/clouds.css | 67 +++++++-------
lib/ace/theme/clouds.js | 4 +-
lib/ace/theme/clouds_midnight.css | 70 ++++++++-------
lib/ace/theme/clouds_midnight.js | 4 +-
lib/ace/theme/cobalt.css | 89 ++++++++++---------
lib/ace/theme/cobalt.js | 4 +-
lib/ace/theme/dawn.css | 97 +++++++++++----------
lib/ace/theme/dawn.js | 4 +-
lib/ace/theme/idle_fingers.css | 85 +++++++++---------
lib/ace/theme/idle_fingers.js | 4 +-
lib/ace/theme/kr_theme.css | 85 +++++++++---------
lib/ace/theme/kr_theme.js | 4 +-
lib/ace/theme/merbivore.css | 91 ++++++++++---------
lib/ace/theme/merbivore.js | 4 +-
lib/ace/theme/merbivore_soft.css | 97 +++++++++++----------
lib/ace/theme/merbivore_soft.js | 4 +-
lib/ace/theme/mono_industrial.css | 93 ++++++++++----------
lib/ace/theme/mono_industrial.js | 4 +-
lib/ace/theme/monokai.css | 99 ++++++++++-----------
lib/ace/theme/monokai.js | 4 +-
lib/ace/theme/pastel_on_dark.css | 97 +++++++++++----------
lib/ace/theme/pastel_on_dark.js | 4 +-
lib/ace/theme/solarized_dark.css | 80 ++++++++---------
lib/ace/theme/solarized_dark.js | 4 +-
lib/ace/theme/solarized_light.css | 78 ++++++++---------
lib/ace/theme/solarized_light.js | 4 +-
lib/ace/theme/tomorrow.css | 101 +++++++++++-----------
lib/ace/theme/tomorrow.js | 4 +-
lib/ace/theme/tomorrow_night.css | 101 +++++++++++-----------
lib/ace/theme/tomorrow_night.js | 4 +-
lib/ace/theme/tomorrow_night_blue.css | 101 +++++++++++-----------
lib/ace/theme/tomorrow_night_blue.js | 4 +-
lib/ace/theme/tomorrow_night_bright.css | 101 +++++++++++-----------
lib/ace/theme/tomorrow_night_bright.js | 4 +-
lib/ace/theme/tomorrow_night_eighties.css | 99 ++++++++++-----------
lib/ace/theme/tomorrow_night_eighties.js | 4 +-
lib/ace/theme/twilight.css | 99 ++++++++++-----------
lib/ace/theme/twilight.js | 4 +-
lib/ace/theme/vibrant_ink.css | 87 ++++++++++---------
lib/ace/theme/vibrant_ink.js | 4 +-
40 files changed, 968 insertions(+), 929 deletions(-)
diff --git a/lib/ace/theme/clouds.css b/lib/ace/theme/clouds.css
index 3f33a7d7..16fac9c6 100644
--- a/lib/ace/theme/clouds.css
+++ b/lib/ace/theme/clouds.css
@@ -1,124 +1,129 @@
.ace-clouds .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-clouds .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-clouds .ace_gutter {
background: #ebebeb;
- color: #333;
+ color: #333
}
.ace-clouds .ace_print_margin {
width: 1px;
- background: #e8e8e8;
+ background: #e8e8e8
}
.ace-clouds .ace_scroller {
- background-color: #FFFFFF;
+ background-color: #FFFFFF
}
.ace-clouds .ace_text-layer {
- color: #000000;
+ color: #000000
}
.ace-clouds .ace_cursor {
- border-left: 2px solid #000000;
+ border-left: 2px solid #000000
}
.ace-clouds .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #000000;
+ border-bottom: 1px solid #000000
}
.ace-clouds .ace_marker-layer .ace_selection {
- background: #BDD5FC;
+ background: #BDD5FC
}
.ace-clouds.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #FFFFFF;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-clouds .ace_marker-layer .ace_step {
- background: rgb(255, 255, 0);
+ background: rgb(255, 255, 0)
}
.ace-clouds .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #BFBFBF;
+ border: 1px solid #BFBFBF
}
.ace-clouds .ace_marker-layer .ace_active_line {
- background: #FFFBD1;
+ background: #FFFBD1
}
.ace-clouds .ace_gutter_active_line {
- background-color : #dcdcdc;
+ background-color : #dcdcdc
}
.ace-clouds .ace_marker-layer .ace_selected_word {
- border: 1px solid #BDD5FC;
+ border: 1px solid #BDD5FC
}
.ace-clouds .ace_invisible {
- color: #BFBFBF;
+ color: #BFBFBF
}
-.ace-clouds .ace_keyword, .ace-clouds .ace_meta {
- color:#AF956F;
+.ace-clouds .ace_keyword,
+.ace-clouds .ace_meta {
+ color: #AF956F
}
.ace-clouds .ace_keyword.ace_operator {
- color:#484848;
+ color: #484848
}
.ace-clouds .ace_constant.ace_language {
- color:#39946A;
+ color: #39946A
}
.ace-clouds .ace_constant.ace_numeric {
- color:#46A609;
+ color: #46A609
}
.ace-clouds .ace_invalid {
- background-color:#FF002A;
+ background-color: #FF002A
}
.ace-clouds .ace_fold {
- background-color: #AF956F;
- border-color: #000000;
+ background-color: #AF956F;
+ border-color: #000000
+}
+
+.ace-clouds .ace_support.ace_function {
+ color: #C52727
}
.ace-clouds .ace_support.ace_function,
.ace-clouds .ace_support.ace_class,
.ace-clouds .ace_support.ace_type,
.ace-clouds .ace_support.ace_other {
- color:#C52727;
+ color: #C52727
}
.ace-clouds .ace_storage {
- color:#C52727;
+ color: #C52727
}
.ace-clouds .ace_string {
- color:#5D90CD;
+ color: #5D90CD
}
.ace-clouds .ace_comment {
- color:#BCC8BA;
+ color: #BCC8BA
}
.ace-clouds .ace_entity.ace_other.ace_attribute-name {
- color:#606060;
+ color: #606060
}
.ace-clouds .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-clouds .ace_indent-guide {
- background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/clouds.js b/lib/ace/theme/clouds.js
index 05e8e719..13d66603 100644
--- a/lib/ace/theme/clouds.js
+++ b/lib/ace/theme/clouds.js
@@ -34,6 +34,6 @@ exports.isDark = false;
exports.cssClass = "ace-clouds";
exports.cssText = require('ace/requirejs/text!./clouds.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/clouds_midnight.css b/lib/ace/theme/clouds_midnight.css
index ba8abd68..6a5009aa 100644
--- a/lib/ace/theme/clouds_midnight.css
+++ b/lib/ace/theme/clouds_midnight.css
@@ -1,126 +1,130 @@
-
.ace-clouds-midnight .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-clouds-midnight .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-clouds-midnight .ace_gutter {
background: #232323;
- color: #929292;
+ color: #929292
}
.ace-clouds-midnight .ace_print_margin {
width: 1px;
- background: #232323;
+ background: #232323
}
.ace-clouds-midnight .ace_scroller {
- background-color: #191919;
+ background-color: #191919
}
.ace-clouds-midnight .ace_text-layer {
- color: #929292;
+ color: #929292
}
.ace-clouds-midnight .ace_cursor {
- border-left: 2px solid #7DA5DC;
+ border-left: 2px solid #7DA5DC
}
.ace-clouds-midnight .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #7DA5DC;
+ border-bottom: 1px solid #7DA5DC
}
.ace-clouds-midnight .ace_marker-layer .ace_selection {
- background: #000000;
+ background: #000000
}
.ace-clouds-midnight.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #191919;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-clouds-midnight .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-clouds-midnight .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #BFBFBF;
+ border: 1px solid #BFBFBF
}
.ace-clouds-midnight .ace_marker-layer .ace_active_line {
- background: rgba(215, 215, 215, 0.031);
+ background: rgba(215, 215, 215, 0.031)
}
.ace-clouds-midnight .ace_gutter_active_line {
- background-color: rgba(215, 215, 215, 0.031);
+ background-color: rgba(215, 215, 215, 0.031)
}
.ace-clouds-midnight .ace_marker-layer .ace_selected_word {
- border: 1px solid #000000;
+ border: 1px solid #000000
}
.ace-clouds-midnight .ace_invisible {
- color: #BFBFBF;
+ color: #BFBFBF
}
-.ace-clouds-midnight .ace_keyword, .ace-clouds-midnight .ace_meta {
- color:#927C5D;
+.ace-clouds-midnight .ace_keyword,
+.ace-clouds-midnight .ace_meta {
+ color: #927C5D
}
.ace-clouds-midnight .ace_keyword.ace_operator {
- color:#4B4B4B;
+ color: #4B4B4B
}
.ace-clouds-midnight .ace_constant.ace_language {
- color:#39946A;
+ color: #39946A
}
.ace-clouds-midnight .ace_constant.ace_numeric {
- color:#46A609;
+ color: #46A609
}
.ace-clouds-midnight .ace_invalid {
- color:#FFFFFF;
-background-color:#E92E2E;
+ color: #FFFFFF;
+ background-color: #E92E2E
}
.ace-clouds-midnight .ace_fold {
- background-color: #927C5D;
- border-color: #929292;
+ background-color: #927C5D;
+ border-color: #929292
+}
+
+.ace-clouds-midnight .ace_support.ace_function {
+ color: #E92E2E
}
.ace-clouds-midnight .ace_support.ace_function,
.ace-clouds-midnight .ace_support.ace_class,
.ace-clouds-midnight .ace_support.ace_type,
.ace-clouds-midnight .ace_support.ace_other {
- color:#E92E2E;
+ color: #E92E2E
}
.ace-clouds-midnight .ace_storage {
- color:#E92E2E;
+ color: #E92E2E
}
.ace-clouds-midnight .ace_string {
- color:#5D90CD;
+ color: #5D90CD
}
.ace-clouds-midnight .ace_comment {
- color:#3C403B;
+ color: #3C403B
}
.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {
- color:#606060;
+ color: #606060
}
.ace-clouds-midnight .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-clouds-midnight .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlJT8z1BeXv4fAA2KA6+h9Z+2AAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlJT8z1BeXv4fAA2KA6+h9Z+2AAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/clouds_midnight.js b/lib/ace/theme/clouds_midnight.js
index df434043..9359d120 100644
--- a/lib/ace/theme/clouds_midnight.js
+++ b/lib/ace/theme/clouds_midnight.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-clouds-midnight";
exports.cssText = require('ace/requirejs/text!./clouds_midnight.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/cobalt.css b/lib/ace/theme/cobalt.css
index f20de018..d23d3aef 100644
--- a/lib/ace/theme/cobalt.css
+++ b/lib/ace/theme/cobalt.css
@@ -1,147 +1,150 @@
.ace-cobalt .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-cobalt .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-cobalt .ace_gutter {
background: #011e3a;
- color: #fff;
+ color: #fff
}
.ace-cobalt .ace_print_margin {
width: 1px;
- background: #011e3a;
+ background: #011e3a
}
.ace-cobalt .ace_scroller {
- background-color: #002240;
+ background-color: #002240
}
.ace-cobalt .ace_text-layer {
- color: #FFFFFF;
+ color: #FFFFFF
}
.ace-cobalt .ace_cursor {
- border-left: 2px solid #FFFFFF;
+ border-left: 2px solid #FFFFFF
}
.ace-cobalt .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF
}
.ace-cobalt .ace_marker-layer .ace_selection {
- background: rgba(179, 101, 57, 0.75);
+ background: rgba(179, 101, 57, 0.75)
}
.ace-cobalt.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #002240;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-cobalt .ace_marker-layer .ace_step {
- background: rgb(127, 111, 19);
+ background: rgb(127, 111, 19)
}
.ace-cobalt .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(255, 255, 255, 0.15);
+ border: 1px solid rgba(255, 255, 255, 0.15)
}
.ace-cobalt .ace_marker-layer .ace_active_line {
- background: rgba(0, 0, 0, 0.35);
+ background: rgba(0, 0, 0, 0.35)
}
.ace-cobalt .ace_gutter_active_line {
- background-color: rgba(0, 0, 0, 0.35);
+ background-color: rgba(0, 0, 0, 0.35)
}
.ace-cobalt .ace_marker-layer .ace_selected_word {
- border: 1px solid rgba(179, 101, 57, 0.75);
+ border: 1px solid rgba(179, 101, 57, 0.75)
}
.ace-cobalt .ace_invisible {
- color: rgba(255, 255, 255, 0.15);
+ color: rgba(255, 255, 255, 0.15)
}
-.ace-cobalt .ace_keyword, .ace-cobalt .ace_meta {
- color:#FF9D00;
+.ace-cobalt .ace_keyword,
+.ace-cobalt .ace_meta {
+ color: #FF9D00
}
-.ace-cobalt .ace_constant, .ace-cobalt .ace_constant.ace_other {
- color:#FF628C;
+.ace-cobalt .ace_constant,
+.ace-cobalt .ace_constant.ace_other {
+ color: #FF628C
}
-.ace-cobalt .ace_constant.ace_character, {
- color:#FF628C;
+.ace-cobalt .ace_constant.ace_character {
+ color: #FF628C
}
-.ace-cobalt .ace_constant.ace_character.ace_escape, {
- color:#FF628C;
+.ace-cobalt .ace_constant.ace_character.ace_escape {
+ color: #FF628C
}
.ace-cobalt .ace_invalid {
- color:#F8F8F8;
-background-color:#800F00;
+ color: #F8F8F8;
+ background-color: #800F00
}
.ace-cobalt .ace_support {
- color:#80FFBB;
+ color: #80FFBB
}
.ace-cobalt .ace_support.ace_constant {
- color:#EB939A;
+ color: #EB939A
}
.ace-cobalt .ace_fold {
- background-color: #FF9D00;
- border-color: #FFFFFF;
+ background-color: #FF9D00;
+ border-color: #FFFFFF
}
.ace-cobalt .ace_support.ace_function {
- color:#FFB054;
+ color: #FFB054
}
.ace-cobalt .ace_storage {
- color:#FFEE80;
+ color: #FFEE80
}
.ace-cobalt .ace_string.ace_regexp {
- color:#80FFC2;
+ color: #80FFC2
}
.ace-cobalt .ace_comment {
- font-style:italic;
-color:#0088FF;
+ font-style: italic;
+ color: #0088FF
}
.ace-cobalt .ace_variable {
- color:#CCCCCC;
+ color: #CCCCCC
}
.ace-cobalt .ace_variable.ace_language {
- color:#FF80E1;
+ color: #FF80E1
}
.ace-cobalt .ace_meta.ace_tag {
- color:#9EFFFF;
+ color: #9EFFFF
}
.ace-cobalt .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-cobalt .ace_markup.ace_heading {
- color:#C8E4FD;
-background-color:#001221;
+ color: #C8E4FD;
+ background-color: #001221
}
.ace-cobalt .ace_markup.ace_list {
- background-color:#130D26;
+ background-color: #130D26
}
+
.ace-cobalt .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUHL4zzBz5sz/AA80BCzv+WXhAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUHL4zzBz5sz/AA80BCzv+WXhAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/cobalt.js b/lib/ace/theme/cobalt.js
index de0bfff7..0964e9a6 100644
--- a/lib/ace/theme/cobalt.js
+++ b/lib/ace/theme/cobalt.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-cobalt";
exports.cssText = require('ace/requirejs/text!./cobalt.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/dawn.css b/lib/ace/theme/dawn.css
index d26edebf..0d14dbf3 100644
--- a/lib/ace/theme/dawn.css
+++ b/lib/ace/theme/dawn.css
@@ -1,153 +1,154 @@
-
.ace-dawn .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-dawn .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-dawn .ace_gutter {
background: #ebebeb;
- color: #333;
+ color: #333
}
.ace-dawn .ace_print_margin {
width: 1px;
- background: #e8e8e8;
+ background: #e8e8e8
}
.ace-dawn .ace_scroller {
- background-color: #F9F9F9;
+ background-color: #F9F9F9
}
.ace-dawn .ace_text-layer {
- color: #080808;
+ color: #080808
}
.ace-dawn .ace_cursor {
- border-left: 2px solid #000000;
+ border-left: 2px solid #000000
}
.ace-dawn .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #000000;
+ border-bottom: 1px solid #000000
}
.ace-dawn .ace_marker-layer .ace_selection {
- background: rgba(39, 95, 255, 0.30);
+ background: rgba(39, 95, 255, 0.30)
}
.ace-dawn.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #F9F9F9;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-dawn .ace_marker-layer .ace_step {
- background: rgb(255, 255, 0);
+ background: rgb(255, 255, 0)
}
.ace-dawn .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(75, 75, 126, 0.50);
+ border: 1px solid rgba(75, 75, 126, 0.50)
}
.ace-dawn .ace_marker-layer .ace_active_line {
- background: rgba(36, 99, 180, 0.12);
+ background: rgba(36, 99, 180, 0.12)
}
.ace-dawn .ace_gutter_active_line {
- background-color : #dcdcdc;
+ background-color : #dcdcdc
}
.ace-dawn .ace_marker-layer .ace_selected_word {
- border: 1px solid rgba(39, 95, 255, 0.30);
+ border: 1px solid rgba(39, 95, 255, 0.30)
}
.ace-dawn .ace_invisible {
- color: rgba(75, 75, 126, 0.50);
+ color: rgba(75, 75, 126, 0.50)
}
-.ace-dawn .ace_keyword, .ace-dawn .ace_meta {
- color:#794938;
+.ace-dawn .ace_keyword,
+.ace-dawn .ace_meta {
+ color: #794938
}
-.ace-dawn .ace_constant, .ace-dawn .ace_constant.ace_other {
- color:#811F24;
+.ace-dawn .ace_constant,
+.ace-dawn .ace_constant.ace_other {
+ color: #811F24
}
-.ace-dawn .ace_constant.ace_character, {
- color:#811F24;
+.ace-dawn .ace_constant.ace_character {
+ color: #811F24
}
-.ace-dawn .ace_constant.ace_character.ace_escape, {
- color:#811F24;
+.ace-dawn .ace_constant.ace_character.ace_escape {
+ color: #811F24
}
.ace-dawn .ace_invalid.ace_illegal {
- text-decoration:underline;
-font-style:italic;
-color:#F8F8F8;
-background-color:#B52A1D;
+ text-decoration: underline;
+ font-style: italic;
+ color: #F8F8F8;
+ background-color: #B52A1D
}
.ace-dawn .ace_invalid.ace_deprecated {
- text-decoration:underline;
-font-style:italic;
-color:#B52A1D;
+ text-decoration: underline;
+ font-style: italic;
+ color: #B52A1D
}
.ace-dawn .ace_support {
- color:#691C97;
+ color: #691C97
}
.ace-dawn .ace_support.ace_constant {
- color:#B4371F;
+ color: #B4371F
}
.ace-dawn .ace_fold {
- background-color: #794938;
- border-color: #080808;
+ background-color: #794938;
+ border-color: #080808
}
.ace-dawn .ace_support.ace_function {
- color:#693A17;
+ color: #693A17
}
.ace-dawn .ace_storage {
- font-style:italic;
-color:#A71D5D;
+ font-style: italic;
+ color: #A71D5D
}
.ace-dawn .ace_string {
- color:#0B6125;
+ color: #0B6125
}
.ace-dawn .ace_string.ace_regexp {
- color:#CF5628;
+ color: #CF5628
}
.ace-dawn .ace_comment {
- font-style:italic;
-color:#5A525F;
+ font-style: italic;
+ color: #5A525F
}
.ace-dawn .ace_variable {
- color:#234A97;
+ color: #234A97
}
.ace-dawn .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-dawn .ace_markup.ace_heading {
- color:#19356D;
+ color: #19356D
}
.ace-dawn .ace_markup.ace_list {
- color:#693A17;
+ color: #693A17
}
.ace-dawn .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4+fPnf4ZVq1b9BwAkVQboFQv98gAAAABJRU5ErkJggg==) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4+fPnf4ZVq1b9BwAkVQboFQv98gAAAABJRU5ErkJggg==) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/dawn.js b/lib/ace/theme/dawn.js
index 4e85d1e9..88b5ae38 100644
--- a/lib/ace/theme/dawn.js
+++ b/lib/ace/theme/dawn.js
@@ -34,6 +34,6 @@ exports.isDark = false;
exports.cssClass = "ace-dawn";
exports.cssText = require('ace/requirejs/text!./dawn.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/idle_fingers.css b/lib/ace/theme/idle_fingers.css
index 00e8a81e..ce7f926b 100644
--- a/lib/ace/theme/idle_fingers.css
+++ b/lib/ace/theme/idle_fingers.css
@@ -1,141 +1,142 @@
-
.ace-idle-fingers .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-idle-fingers .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-idle-fingers .ace_gutter {
background: #3b3b3b;
- color: #fff;
+ color: #fff
}
.ace-idle-fingers .ace_print_margin {
width: 1px;
- background: #3b3b3b;
+ background: #3b3b3b
}
.ace-idle-fingers .ace_scroller {
- background-color: #323232;
+ background-color: #323232
}
.ace-idle-fingers .ace_text-layer {
- color: #FFFFFF;
+ color: #FFFFFF
}
.ace-idle-fingers .ace_cursor {
- border-left: 2px solid #91FF00;
+ border-left: 2px solid #91FF00
}
.ace-idle-fingers .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #91FF00;
+ border-bottom: 1px solid #91FF00
}
.ace-idle-fingers .ace_marker-layer .ace_selection {
- background: rgba(90, 100, 126, 0.88);
+ background: rgba(90, 100, 126, 0.88)
}
.ace-idle-fingers.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #323232;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-idle-fingers .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-idle-fingers .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #404040;
+ border: 1px solid #404040
}
.ace-idle-fingers .ace_marker-layer .ace_active_line {
- background: #353637;
+ background: #353637
}
.ace-idle-fingers .ace_gutter_active_line {
- background-color: #353637;
+ background-color: #353637
}
.ace-idle-fingers .ace_marker-layer .ace_selected_word {
- border: 1px solid rgba(90, 100, 126, 0.88);
+ border: 1px solid rgba(90, 100, 126, 0.88)
}
.ace-idle-fingers .ace_invisible {
- color: #404040;
+ color: #404040
}
-.ace-idle-fingers .ace_keyword, .ace-idle-fingers .ace_meta {
- color:#CC7833;
+.ace-idle-fingers .ace_keyword,
+.ace-idle-fingers .ace_meta {
+ color: #CC7833
}
-.ace-idle-fingers .ace_constant, .ace-idle-fingers .ace_constant.ace_other {
- color:#6C99BB;
+.ace-idle-fingers .ace_constant,
+.ace-idle-fingers .ace_constant.ace_other {
+ color: #6C99BB
}
-.ace-idle-fingers .ace_constant.ace_character, {
- color:#6C99BB;
+.ace-idle-fingers .ace_constant.ace_character {
+ color: #6C99BB
}
-.ace-idle-fingers .ace_constant.ace_character.ace_escape, {
- color:#6C99BB;
+.ace-idle-fingers .ace_constant.ace_character.ace_escape {
+ color: #6C99BB
}
.ace-idle-fingers .ace_invalid {
- color:#FFFFFF;
-background-color:#FF0000;
+ color: #FFFFFF;
+ background-color: #FF0000
}
.ace-idle-fingers .ace_support.ace_constant {
- color:#6C99BB;
+ color: #6C99BB
}
.ace-idle-fingers .ace_fold {
- background-color: #CC7833;
- border-color: #FFFFFF;
+ background-color: #CC7833;
+ border-color: #FFFFFF
}
.ace-idle-fingers .ace_support.ace_function {
- color:#B83426;
+ color: #B83426
}
.ace-idle-fingers .ace_variable.ace_parameter {
- font-style:italic;
+ font-style: italic
}
.ace-idle-fingers .ace_string {
- color:#A5C261;
+ color: #A5C261
}
.ace-idle-fingers .ace_string.ace_regexp {
- color:#CCCC33;
+ color: #CCCC33
}
.ace-idle-fingers .ace_comment {
- font-style:italic;
-color:#BC9458;
+ font-style: italic;
+ color: #BC9458
}
.ace-idle-fingers .ace_meta.ace_tag {
- color:#FFE5BB;
+ color: #FFE5BB
}
.ace-idle-fingers .ace_entity.ace_name {
- color:#FFC66D;
+ color: #FFC66D
}
.ace-idle-fingers .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-idle-fingers .ace_collab.ace_user1 {
- color:#323232;
- background-color:#FFF980;
+ color: #323232;
+ background-color: #FFF980
}
.ace-idle-fingers .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjL6zzBz5sz/ABEUBGCqhK6UAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjL6zzBz5sz/ABEUBGCqhK6UAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/idle_fingers.js b/lib/ace/theme/idle_fingers.js
index 251d6e63..fcb3be31 100644
--- a/lib/ace/theme/idle_fingers.js
+++ b/lib/ace/theme/idle_fingers.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-idle-fingers";
exports.cssText = require('ace/requirejs/text!./idle_fingers.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/kr_theme.css b/lib/ace/theme/kr_theme.css
index ede07375..0a33b0cc 100644
--- a/lib/ace/theme/kr_theme.css
+++ b/lib/ace/theme/kr_theme.css
@@ -1,144 +1,145 @@
-
.ace-kr-theme .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-kr-theme .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-kr-theme .ace_gutter {
background: #1c1917;
- color: #FCFFE0;
+ color: #FCFFE0
}
.ace-kr-theme .ace_print_margin {
width: 1px;
- background: #1c1917;
+ background: #1c1917
}
.ace-kr-theme .ace_scroller {
- background-color: #0B0A09;
+ background-color: #0B0A09
}
.ace-kr-theme .ace_text-layer {
- color: #FCFFE0;
+ color: #FCFFE0
}
.ace-kr-theme .ace_cursor {
- border-left: 2px solid #FF9900;
+ border-left: 2px solid #FF9900
}
.ace-kr-theme .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #FF9900;
+ border-bottom: 1px solid #FF9900
}
.ace-kr-theme .ace_marker-layer .ace_selection {
- background: rgba(170, 0, 255, 0.45);
+ background: rgba(170, 0, 255, 0.45)
}
.ace-kr-theme.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #0B0A09;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-kr-theme .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-kr-theme .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(255, 177, 111, 0.32);
+ border: 1px solid rgba(255, 177, 111, 0.32)
}
.ace-kr-theme .ace_marker-layer .ace_active_line {
- background: #38403D;
+ background: #38403D
}
.ace-kr-theme .ace_gutter_active_line {
- background-color : #38403D;
+ background-color : #38403D
}
.ace-kr-theme .ace_marker-layer .ace_selected_word {
- border: 1px solid rgba(170, 0, 255, 0.45);
+ border: 1px solid rgba(170, 0, 255, 0.45)
}
.ace-kr-theme .ace_invisible {
- color: rgba(255, 177, 111, 0.32);
+ color: rgba(255, 177, 111, 0.32)
}
-.ace-kr-theme .ace_keyword, .ace-kr-theme .ace_meta {
- color:#949C8B;
+.ace-kr-theme .ace_keyword,
+.ace-kr-theme .ace_meta {
+ color: #949C8B
}
-.ace-kr-theme .ace_constant, .ace-kr-theme .ace_constant.ace_other {
- color:rgba(210, 117, 24, 0.76);
+.ace-kr-theme .ace_constant,
+.ace-kr-theme .ace_constant.ace_other {
+ color: rgba(210, 117, 24, 0.76)
}
-.ace-kr-theme .ace_constant.ace_character, {
- color:rgba(210, 117, 24, 0.76);
+.ace-kr-theme .ace_constant.ace_character {
+ color: rgba(210, 117, 24, 0.76)
}
-.ace-kr-theme .ace_constant.ace_character.ace_escape, {
- color:rgba(210, 117, 24, 0.76);
+.ace-kr-theme .ace_constant.ace_character.ace_escape {
+ color: rgba(210, 117, 24, 0.76)
}
.ace-kr-theme .ace_invalid {
- color:#F8F8F8;
-background-color:#A41300;
+ color: #F8F8F8;
+ background-color: #A41300
}
.ace-kr-theme .ace_support {
- color:#9FC28A;
+ color: #9FC28A
}
.ace-kr-theme .ace_support.ace_constant {
- color:#C27E66;
+ color: #C27E66
}
.ace-kr-theme .ace_fold {
- background-color: #949C8B;
- border-color: #FCFFE0;
+ background-color: #949C8B;
+ border-color: #FCFFE0
}
.ace-kr-theme .ace_support.ace_function {
- color:#85873A;
+ color: #85873A
}
.ace-kr-theme .ace_storage {
- color:#FFEE80;
+ color: #FFEE80
}
.ace-kr-theme .ace_string.ace_regexp {
- color:rgba(125, 255, 192, 0.65);
+ color: rgba(125, 255, 192, 0.65)
}
.ace-kr-theme .ace_comment {
- font-style:italic;
-color:#706D5B;
+ font-style: italic;
+ color: #706D5B
}
.ace-kr-theme .ace_variable {
- color:#D1A796;
+ color: #D1A796
}
.ace-kr-theme .ace_variable.ace_language {
- color:#FF80E1;
+ color: #FF80E1
}
.ace-kr-theme .ace_meta.ace_tag {
- color:#BABD9C;
+ color: #BABD9C
}
.ace-kr-theme .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-kr-theme .ace_markup.ace_list {
- background-color:#0F0040;
+ background-color: #0F0040
}
.ace-kr-theme .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5uL8zzBz5sz/AA1WA+hUYIqjAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5uL8zzBz5sz/AA1WA+hUYIqjAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/kr_theme.js b/lib/ace/theme/kr_theme.js
index da7dd1d3..81faf395 100644
--- a/lib/ace/theme/kr_theme.js
+++ b/lib/ace/theme/kr_theme.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-kr-theme";
exports.cssText = require('ace/requirejs/text!./kr_theme.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/merbivore.css b/lib/ace/theme/merbivore.css
index 19a74801..d9229a08 100644
--- a/lib/ace/theme/merbivore.css
+++ b/lib/ace/theme/merbivore.css
@@ -1,148 +1,153 @@
-
.ace-merbivore .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-merbivore .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-merbivore .ace_gutter {
background: #202020;
- color: #E6E1DC;
+ color: #E6E1DC
}
.ace-merbivore .ace_print_margin {
width: 1px;
- background: #555651;
+ background: #555651
}
.ace-merbivore .ace_scroller {
- background-color: #161616;
+ background-color: #161616
}
.ace-merbivore .ace_text-layer {
- color: #E6E1DC;
+ color: #E6E1DC
}
.ace-merbivore .ace_cursor {
- border-left: 2px solid #FFFFFF;
+ border-left: 2px solid #FFFFFF
}
.ace-merbivore .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF
}
.ace-merbivore .ace_marker-layer .ace_selection {
- background: #454545;
+ background: #454545
}
.ace-merbivore.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #161616;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-merbivore .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-merbivore .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #404040;
+ border: 1px solid #404040
}
.ace-merbivore .ace_marker-layer .ace_active_line {
- background: #333435;
+ background: #333435
}
.ace-merbivore .ace_gutter_active_line {
- background-color: #333435;
+ background-color: #333435
}
.ace-merbivore .ace_marker-layer .ace_selected_word {
- border: 1px solid #454545;
+ border: 1px solid #454545
}
.ace-merbivore .ace_invisible {
- color: #404040;
+ color: #404040
}
-.ace-merbivore .ace_keyword, .ace-merbivore .ace_meta {
- color:#FC6F09;
+.ace-merbivore .ace_keyword,
+.ace-merbivore .ace_meta {
+ color: #FC6F09
}
-.ace-merbivore .ace_constant, .ace-merbivore .ace_constant.ace_other {
- color:#1EDAFB;
+.ace-merbivore .ace_constant,
+.ace-merbivore .ace_constant.ace_other {
+ color: #1EDAFB
}
-.ace-merbivore .ace_constant.ace_character, {
- color:#1EDAFB;
+.ace-merbivore .ace_constant.ace_character.ace_escape {
+ color: #519F50
}
-.ace-merbivore .ace_constant.ace_character.ace_escape, {
- color:#1EDAFB;
+.ace-merbivore .ace_constant.ace_character {
+ color: #1EDAFB
+}
+
+.ace-merbivore .ace_constant.ace_character.ace_escape {
+ color: #1EDAFB
}
.ace-merbivore .ace_constant.ace_language {
- color:#FDC251;
+ color: #FDC251
}
.ace-merbivore .ace_constant.ace_library {
- color:#8DFF0A;
+ color: #8DFF0A
}
.ace-merbivore .ace_constant.ace_numeric {
- color:#58C554;
+ color: #58C554
}
.ace-merbivore .ace_invalid {
- color:#FFFFFF;
-background-color:#990000;
+ color: #FFFFFF;
+ background-color: #990000
}
.ace-merbivore .ace_support.ace_constant {
- color:#8DFF0A;
+ color: #8DFF0A
}
.ace-merbivore .ace_fold {
- background-color: #FC6F09;
- border-color: #E6E1DC;
+ background-color: #FC6F09;
+ border-color: #E6E1DC
}
.ace-merbivore .ace_support.ace_function {
- color:#FC6F09;
+ color: #FC6F09
}
.ace-merbivore .ace_support.ace_type {
- color:#1EDAFB;
+ color: #1EDAFB
}
.ace-merbivore .ace_storage {
- color:#FC6F09;
+ color: #FC6F09
}
.ace-merbivore .ace_string {
- color:#8DFF0A;
+ color: #8DFF0A
}
.ace-merbivore .ace_comment {
- font-style:italic;
-color:#AD2EA4;
+ font-style: italic;
+ color: #AD2EA4
}
.ace-merbivore .ace_meta.ace_tag {
- color:#FC6F09;
+ color: #FC6F09
}
.ace-merbivore .ace_entity.ace_other.ace_attribute-name {
- color:#FFFF89;
+ color: #FFFF89
}
.ace-merbivore .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-merbivore .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQExP7zzBz5sz/AA50BAyDznYhAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQExP7zzBz5sz/AA50BAyDznYhAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/merbivore.js b/lib/ace/theme/merbivore.js
index 254fdad0..bba49410 100644
--- a/lib/ace/theme/merbivore.js
+++ b/lib/ace/theme/merbivore.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-merbivore";
exports.cssText = require('ace/requirejs/text!./merbivore.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/merbivore_soft.css b/lib/ace/theme/merbivore_soft.css
index 591bd3a9..d011987d 100644
--- a/lib/ace/theme/merbivore_soft.css
+++ b/lib/ace/theme/merbivore_soft.css
@@ -1,154 +1,159 @@
-
.ace-merbivore-soft .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-merbivore-soft .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-merbivore-soft .ace_gutter {
background: #262424;
- color: #E6E1DC;
+ color: #E6E1DC
}
.ace-merbivore-soft .ace_print_margin {
width: 1px;
- background: #262424;
+ background: #262424
}
.ace-merbivore-soft .ace_scroller {
- background-color: #1C1C1C;
+ background-color: #1C1C1C
}
.ace-merbivore-soft .ace_text-layer {
- color: #E6E1DC;
+ color: #E6E1DC
}
.ace-merbivore-soft .ace_cursor {
- border-left: 2px solid #FFFFFF;
+ border-left: 2px solid #FFFFFF
}
.ace-merbivore-soft .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF
}
.ace-merbivore-soft .ace_marker-layer .ace_selection {
- background: #494949;
+ background: #494949
}
.ace-merbivore-soft.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #1C1C1C;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-merbivore-soft .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-merbivore-soft .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #404040;
+ border: 1px solid #404040
}
.ace-merbivore-soft .ace_marker-layer .ace_active_line {
- background: #333435;
+ background: #333435
}
.ace-merbivore-soft .ace_gutter_active_line {
- background-color: #333435;
+ background-color: #333435
}
.ace-merbivore-soft .ace_marker-layer .ace_selected_word {
- border: 1px solid #494949;
+ border: 1px solid #494949
}
.ace-merbivore-soft .ace_invisible {
- color: #404040;
+ color: #404040
}
-.ace-merbivore-soft .ace_keyword, .ace-merbivore-soft .ace_meta {
- color:#FC803A;
+.ace-merbivore-soft .ace_keyword,
+.ace-merbivore-soft .ace_meta {
+ color: #FC803A
}
-.ace-merbivore-soft .ace_constant, .ace-merbivore-soft .ace_constant.ace_other {
- color:#68C1D8;
+.ace-merbivore-soft .ace_constant,
+.ace-merbivore-soft .ace_constant.ace_other {
+ color: #68C1D8
}
-.ace-merbivore-soft .ace_constant.ace_character, {
- color:#68C1D8;
+.ace-merbivore-soft .ace_constant.ace_character.ace_escape {
+ color: #B3E5B4
}
-.ace-merbivore-soft .ace_constant.ace_character.ace_escape, {
- color:#68C1D8;
+.ace-merbivore-soft .ace_constant.ace_character {
+ color: #68C1D8
+}
+
+.ace-merbivore-soft .ace_constant.ace_character.ace_escape {
+ color: #68C1D8
}
.ace-merbivore-soft .ace_constant.ace_language {
- color:#E1C582;
+ color: #E1C582
}
.ace-merbivore-soft .ace_constant.ace_library {
- color:#8EC65F;
+ color: #8EC65F
}
.ace-merbivore-soft .ace_constant.ace_numeric {
- color:#7FC578;
+ color: #7FC578
}
.ace-merbivore-soft .ace_invalid {
- color:#FFFFFF;
-background-color:#FE3838;
+ color: #FFFFFF;
+ background-color: #FE3838
}
.ace-merbivore-soft .ace_invalid.ace_deprecated {
- color:#FFFFFF;
-background-color:#FE3838;
+ color: #FFFFFF;
+ background-color: #FE3838
}
.ace-merbivore-soft .ace_support.ace_constant {
- color:#8EC65F;
+ color: #8EC65F
}
.ace-merbivore-soft .ace_fold {
- background-color: #FC803A;
- border-color: #E6E1DC;
+ background-color: #FC803A;
+ border-color: #E6E1DC
}
.ace-merbivore-soft .ace_support.ace_type {
- color:#68C1D8;
+ color: #68C1D8
}
.ace-merbivore-soft .ace_storage {
- color:#FC803A;
+ color: #FC803A
}
.ace-merbivore-soft .ace_string {
- color:#8EC65F;
+ color: #8EC65F
}
.ace-merbivore-soft .ace_comment {
- font-style:italic;
-color:#AC4BB8;
+ font-style: italic;
+ color: #AC4BB8
}
.ace-merbivore-soft .ace_meta {
- font-style:italic;
-color:#AC4BB8;
+ font-style: italic;
+ color: #AC4BB8
}
.ace-merbivore-soft .ace_meta.ace_tag {
- color:#FC803A;
+ color: #FC803A
}
.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {
- color:#EAF1A3;
+ color: #EAF1A3
}
.ace-merbivore-soft .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-merbivore-soft .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkZH5zzBz5sz/AA8EBB6crd1rAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkZH5zzBz5sz/AA8EBB6crd1rAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/merbivore_soft.js b/lib/ace/theme/merbivore_soft.js
index d5e7dbbd..5848e289 100644
--- a/lib/ace/theme/merbivore_soft.js
+++ b/lib/ace/theme/merbivore_soft.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-merbivore-soft";
exports.cssText = require('ace/requirejs/text!./merbivore_soft.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/mono_industrial.css b/lib/ace/theme/mono_industrial.css
index e8c79c76..91f8480b 100644
--- a/lib/ace/theme/mono_industrial.css
+++ b/lib/ace/theme/mono_industrial.css
@@ -1,160 +1,161 @@
-
.ace-mono-industrial .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-mono-industrial .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-mono-industrial .ace_gutter {
background: #1d2521;
- color: #C5C9C9;
+ color: #C5C9C9
}
.ace-mono-industrial .ace_print_margin {
width: 1px;
- background: #555651;
+ background: #555651
}
.ace-mono-industrial .ace_scroller {
- background-color: #222C28;
+ background-color: #222C28
}
.ace-mono-industrial .ace_text-layer {
- color: #FFFFFF;
+ color: #FFFFFF
}
.ace-mono-industrial .ace_cursor {
- border-left: 2px solid #FFFFFF;
+ border-left: 2px solid #FFFFFF
}
.ace-mono-industrial .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF
}
.ace-mono-industrial .ace_marker-layer .ace_selection {
- background: rgba(145, 153, 148, 0.40);
+ background: rgba(145, 153, 148, 0.40)
}
.ace-mono-industrial.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #222C28;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-mono-industrial .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-mono-industrial .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(102, 108, 104, 0.50);
+ border: 1px solid rgba(102, 108, 104, 0.50)
}
.ace-mono-industrial .ace_marker-layer .ace_active_line {
- background: rgba(12, 13, 12, 0.25);
+ background: rgba(12, 13, 12, 0.25)
}
.ace-mono-industrial .ace_gutter_active_line {
- background-color: rgba(12, 13, 12, 0.25);
+ background-color: rgba(12, 13, 12, 0.25)
}
.ace-mono-industrial .ace_marker-layer .ace_selected_word {
- border: 1px solid rgba(145, 153, 148, 0.40);
+ border: 1px solid rgba(145, 153, 148, 0.40)
}
.ace-mono-industrial .ace_invisible {
- color: rgba(102, 108, 104, 0.50);
+ color: rgba(102, 108, 104, 0.50)
}
-.ace-mono-industrial .ace_keyword, .ace-mono-industrial .ace_meta {
- color:#A39E64;
+.ace-mono-industrial .ace_keyword,
+.ace-mono-industrial .ace_meta {
+ color: #A39E64
}
.ace-mono-industrial .ace_keyword.ace_operator {
- color:#A8B3AB;
+ color: #A8B3AB
}
-.ace-mono-industrial .ace_constant, .ace-mono-industrial .ace_constant.ace_other {
- color:#E98800;
+.ace-mono-industrial .ace_constant,
+.ace-mono-industrial .ace_constant.ace_other {
+ color: #E98800
}
-.ace-mono-industrial .ace_constant.ace_character, {
- color:#E98800;
+.ace-mono-industrial .ace_constant.ace_character {
+ color: #E98800
}
-.ace-mono-industrial .ace_constant.ace_character.ace_escape, {
- color:#E98800;
+.ace-mono-industrial .ace_constant.ace_character.ace_escape {
+ color: #E98800
}
.ace-mono-industrial .ace_constant.ace_numeric {
- color:#E98800;
+ color: #E98800
}
.ace-mono-industrial .ace_invalid {
- color:#FFFFFF;
-background-color:rgba(153, 0, 0, 0.68);
+ color: #FFFFFF;
+ background-color: rgba(153, 0, 0, 0.68)
}
.ace-mono-industrial .ace_support.ace_constant {
- color:#C87500;
+ color: #C87500
}
.ace-mono-industrial .ace_fold {
- background-color: #A8B3AB;
- border-color: #FFFFFF;
+ background-color: #A8B3AB;
+ border-color: #FFFFFF
}
.ace-mono-industrial .ace_support.ace_function {
- color:#588E60;
+ color: #588E60
}
.ace-mono-industrial .ace_support.ace_type {
- color:#5778B6;
+ color: #5778B6
}
.ace-mono-industrial .ace_support.ace_class {
- color:#5778B6;
+ color: #5778B6
}
.ace-mono-industrial .ace_storage {
- color:#C23B00;
+ color: #C23B00
}
.ace-mono-industrial .ace_variable {
- color:#A8B3AB;
+ color: #A8B3AB
}
.ace-mono-industrial .ace_variable.ace_parameter {
- color:#648BD2;
+ color: #648BD2
}
.ace-mono-industrial .ace_comment {
- color:#666C68;
-background-color:#151C19;
+ color: #666C68;
+ background-color: #151C19
}
.ace-mono-industrial .ace_variable.ace_language {
- color:#648BD2;
+ color: #648BD2
}
.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {
- color:#909993;
+ color: #909993
}
.ace-mono-industrial .ace_entity.ace_name {
- color:#5778B6;
+ color: #5778B6
}
.ace-mono-industrial .ace_entity.ace_name.ace_function {
- color:#A8B3AB;
+ color: #A8B3AB
}
.ace-mono-industrial .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-mono-industrial .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ0tH4zzBz5sz/ABAOBECKH+evAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ0tH4zzBz5sz/ABAOBECKH+evAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/mono_industrial.js b/lib/ace/theme/mono_industrial.js
index d17f39f2..288cd710 100644
--- a/lib/ace/theme/mono_industrial.js
+++ b/lib/ace/theme/mono_industrial.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-mono-industrial";
exports.cssText = require('ace/requirejs/text!./mono_industrial.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/monokai.css b/lib/ace/theme/monokai.css
index d2526206..d88e68e4 100644
--- a/lib/ace/theme/monokai.css
+++ b/lib/ace/theme/monokai.css
@@ -1,164 +1,165 @@
-
.ace-monokai .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-monokai .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-monokai .ace_gutter {
background: #2f3129;
- color: #f1f1f1;
+ color: #f1f1f1
}
.ace-monokai .ace_print_margin {
width: 1px;
- background: #555651;
+ background: #555651
}
.ace-monokai .ace_scroller {
- background-color: #272822;
+ background-color: #272822
}
.ace-monokai .ace_text-layer {
- color: #F8F8F2;
+ color: #F8F8F2
}
.ace-monokai .ace_cursor {
- border-left: 2px solid #F8F8F0;
+ border-left: 2px solid #F8F8F0
}
.ace-monokai .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #F8F8F0;
+ border-bottom: 1px solid #F8F8F0
}
.ace-monokai .ace_marker-layer .ace_selection {
- background: #49483E;
+ background: #49483E
}
.ace-monokai.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #272822;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-monokai .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-monokai .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #49483E;
+ border: 1px solid #49483E
}
.ace-monokai .ace_marker-layer .ace_active_line {
- background: #202020;
+ background: #202020
}
.ace-monokai .ace_gutter_active_line {
- background-color: #272727;
+ background-color: #272727
}
.ace-monokai .ace_marker-layer .ace_selected_word {
- border: 1px solid #49483E;
+ border: 1px solid #49483E
}
.ace-monokai .ace_invisible {
- color: #49483E;
+ color: #49483E
}
-.ace-monokai .ace_keyword, .ace-monokai .ace_meta {
- color:#F92672;
+.ace-monokai .ace_keyword,
+.ace-monokai .ace_meta {
+ color: #F92672
}
-.ace-monokai .ace_constant.ace_character {
- color:#AE81FF;
+.ace-monokai .ace_constant.ace_character {
+ color: #AE81FF
}
.ace-monokai .ace_constant.ace_language {
- color:#AE81FF;
+ color: #AE81FF
}
.ace-monokai .ace_constant.ace_numeric {
- color:#AE81FF;
+ color: #AE81FF
}
.ace-monokai .ace_constant.ace_other {
- color:#AE81FF;
+ color: #AE81FF
}
.ace-monokai .ace_invalid {
- color:#F8F8F0;
-background-color:#F92672;
+ color: #F8F8F0;
+ background-color: #F92672
}
.ace-monokai .ace_invalid.ace_deprecated {
- color:#F8F8F0;
-background-color:#AE81FF;
+ color: #F8F8F0;
+ background-color: #AE81FF
}
.ace-monokai .ace_support.ace_constant {
- color:#66D9EF;
+ color: #66D9EF
}
.ace-monokai .ace_fold {
- background-color: #A6E22E;
- border-color: #F8F8F2;
+ background-color: #A6E22E;
+ border-color: #F8F8F2
}
.ace-monokai .ace_support.ace_function {
- color:#66D9EF;
+ color: #66D9EF
}
.ace-monokai .ace_support.ace_type {
- font-style:italic;
-color:#66D9EF;
+ font-style: italic;
+ color: #66D9EF
}
.ace-monokai .ace_support.ace_class {
- font-style:italic;
-color:#66D9EF;
+ font-style: italic;
+ color: #66D9EF
}
.ace-monokai .ace_storage {
- color:#F92672;
+ color: #F92672
}
-.ace-monokai .ace_storage.ace_type, .ace-monokai .ace_support.ace_type {
- font-style:italic;
-color:#66D9EF;
+.ace-monokai .ace_storage.ace_type,
+.ace-monokai .ace_support.ace_type {
+ font-style: italic;
+ color: #66D9EF
}
.ace-monokai .ace_variable {
- color:#A6E22E;
+ color: #A6E22E
}
.ace-monokai .ace_variable.ace_parameter {
- font-style:italic;
-color:#FD971F;
+ font-style: italic;
+ color: #FD971F
}
.ace-monokai .ace_string {
- color:#E6DB74;
+ color: #E6DB74
}
.ace-monokai .ace_comment {
- color:#75715E;
+ color: #75715E
}
.ace-monokai .ace_entity.ace_other.ace_attribute-name {
- color:#A6E22E;
+ color: #A6E22E
}
.ace-monokai .ace_entity.ace_name.ace_function {
- color:#A6E22E;
+ color: #A6E22E
}
.ace-monokai .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-monokai .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/monokai.js b/lib/ace/theme/monokai.js
index b41141b0..fe4283c6 100644
--- a/lib/ace/theme/monokai.js
+++ b/lib/ace/theme/monokai.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-monokai";
exports.cssText = require('ace/requirejs/text!./monokai.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/pastel_on_dark.css b/lib/ace/theme/pastel_on_dark.css
index 104d5168..3383af29 100644
--- a/lib/ace/theme/pastel_on_dark.css
+++ b/lib/ace/theme/pastel_on_dark.css
@@ -1,154 +1,159 @@
-
.ace-pastel-on-dark .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-pastel-on-dark .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-pastel-on-dark .ace_gutter {
background: #353030;
- color: #8F938F;
+ color: #8F938F
}
.ace-pastel-on-dark .ace_print_margin {
width: 1px;
- background: #353030;
+ background: #353030
}
.ace-pastel-on-dark .ace_scroller {
- background-color: #2C2828;
+ background-color: #2C2828
}
.ace-pastel-on-dark .ace_text-layer {
- color: #8F938F;
+ color: #8F938F
}
.ace-pastel-on-dark .ace_cursor {
- border-left: 2px solid #A7A7A7;
+ border-left: 2px solid #A7A7A7
}
.ace-pastel-on-dark .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #A7A7A7;
+ border-bottom: 1px solid #A7A7A7
}
.ace-pastel-on-dark .ace_marker-layer .ace_selection {
- background: rgba(221, 240, 255, 0.20);
+ background: rgba(221, 240, 255, 0.20)
}
.ace-pastel-on-dark.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #2C2828;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-pastel-on-dark .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-pastel-on-dark .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(255, 255, 255, 0.25);
+ border: 1px solid rgba(255, 255, 255, 0.25)
}
.ace-pastel-on-dark .ace_marker-layer .ace_active_line {
- background: rgba(255, 255, 255, 0.031);
+ background: rgba(255, 255, 255, 0.031)
}
.ace-pastel-on-dark .ace_gutter_active_line {
- background-color: rgba(255, 255, 255, 0.031);
+ background-color: rgba(255, 255, 255, 0.031)
}
.ace-pastel-on-dark .ace_marker-layer .ace_selected_word {
- border: 1px solid rgba(221, 240, 255, 0.20);
+ border: 1px solid rgba(221, 240, 255, 0.20)
}
.ace-pastel-on-dark .ace_invisible {
- color: rgba(255, 255, 255, 0.25);
+ color: rgba(255, 255, 255, 0.25)
}
-.ace-pastel-on-dark .ace_keyword, .ace-pastel-on-dark .ace_meta {
- color:#757aD8;
+.ace-pastel-on-dark .ace_keyword,
+.ace-pastel-on-dark .ace_meta {
+ color: #757aD8
}
.ace-pastel-on-dark .ace_keyword.ace_operator {
- color:#797878;
+ color: #797878
}
-.ace-pastel-on-dark .ace_constant, .ace-pastel-on-dark .ace_constant.ace_other {
- color:#4FB7C5;
+.ace-pastel-on-dark .ace_constant,
+.ace-pastel-on-dark .ace_constant.ace_other {
+ color: #4FB7C5
}
-.ace-pastel-on-dark .ace_constant.ace_character, {
- color:#4FB7C5;
+.ace-pastel-on-dark .ace_constant.ace_character {
+ color: #AFA472
}
-.ace-pastel-on-dark .ace_constant.ace_character.ace_escape, {
- color:#4FB7C5;
+.ace-pastel-on-dark .ace_constant.ace_character {
+ color: #4FB7C5
+}
+
+.ace-pastel-on-dark .ace_constant.ace_character.ace_escape {
+ color: #4FB7C5
}
.ace-pastel-on-dark .ace_constant.ace_language {
- color:#DE8E30;
+ color: #DE8E30
}
.ace-pastel-on-dark .ace_constant.ace_numeric {
- color:#CCCCCC;
+ color: #CCCCCC
}
.ace-pastel-on-dark .ace_invalid {
- color:#F8F8F8;
-background-color:rgba(86, 45, 86, 0.75);
+ color: #F8F8F8;
+ background-color: rgba(86, 45, 86, 0.75)
}
.ace-pastel-on-dark .ace_invalid.ace_illegal {
- color:#F8F8F8;
-background-color:rgba(86, 45, 86, 0.75);
+ color: #F8F8F8;
+ background-color: rgba(86, 45, 86, 0.75)
}
.ace-pastel-on-dark .ace_invalid.ace_deprecated {
- text-decoration:underline;
-font-style:italic;
-color:#D2A8A1;
+ text-decoration: underline;
+ font-style: italic;
+ color: #D2A8A1
}
.ace-pastel-on-dark .ace_fold {
- background-color: #757aD8;
- border-color: #8F938F;
+ background-color: #757aD8;
+ border-color: #8F938F
}
.ace-pastel-on-dark .ace_support.ace_function {
- color:#AEB2F8;
+ color: #AEB2F8
}
.ace-pastel-on-dark .ace_string {
- color:#66A968;
+ color: #66A968
}
.ace-pastel-on-dark .ace_string.ace_regexp {
- color:#E9C062;
+ color: #E9C062
}
.ace-pastel-on-dark .ace_comment {
- color:#A6C6FF;
+ color: #A6C6FF
}
.ace-pastel-on-dark .ace_variable {
- color:#BEBF55;
+ color: #BEBF55
}
.ace-pastel-on-dark .ace_variable.ace_language {
- color:#C1C144;
+ color: #C1C144
}
.ace-pastel-on-dark .ace_xml_pe {
- color:#494949;
+ color: #494949
}
.ace-pastel-on-dark .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-pastel-on-dark .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0dD4z9DR0fEfAA+vBBPqhbn1AAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0dD4z9DR0fEfAA+vBBPqhbn1AAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/pastel_on_dark.js b/lib/ace/theme/pastel_on_dark.js
index 28672150..93776772 100644
--- a/lib/ace/theme/pastel_on_dark.js
+++ b/lib/ace/theme/pastel_on_dark.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-pastel-on-dark";
exports.cssText = require('ace/requirejs/text!./pastel_on_dark.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/solarized_dark.css b/lib/ace/theme/solarized_dark.css
index d67fa827..0dd836e6 100644
--- a/lib/ace/theme/solarized_dark.css
+++ b/lib/ace/theme/solarized_dark.css
@@ -1,147 +1,147 @@
-
.ace-solarized-dark .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-solarized-dark .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-solarized-dark .ace_gutter {
background: #01313f;
- color: #d0edf7;
+ color: #d0edf7
}
.ace-solarized-dark .ace_print_margin {
width: 1px;
- background: #33555E;
+ background: #33555E
}
.ace-solarized-dark .ace_scroller {
- background-color: #002B36;
+ background-color: #002B36
}
.ace-solarized-dark .ace_text-layer {
- color: #93A1A1;
+ color: #93A1A1
}
.ace-solarized-dark .ace_cursor {
- border-left: 2px solid #D30102;
+ border-left: 2px solid #D30102
}
.ace-solarized-dark .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #D30102;
+ border-bottom: 1px solid #D30102
}
.ace-solarized-dark .ace_marker-layer .ace_selection {
- background: #073642;
+ background: #073642
}
.ace-solarized-dark.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #002B36;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-solarized-dark .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-solarized-dark .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(147, 161, 161, 0.50);
+ border: 1px solid rgba(147, 161, 161, 0.50)
}
.ace-solarized-dark .ace_marker-layer .ace_active_line {
- background: #073642;
+ background: #073642
}
.ace-solarized-dark .ace_gutter_active_line {
- background-color: #0d3440;
+ background-color: #0d3440
}
.ace-solarized-dark .ace_marker-layer .ace_selected_word {
- border: 1px solid #073642;
+ border: 1px solid #073642
}
.ace-solarized-dark .ace_invisible {
- color: rgba(147, 161, 161, 0.50);
+ color: rgba(147, 161, 161, 0.50)
}
-.ace-solarized-dark .ace_keyword, .ace-solarized-dark .ace_meta {
- color:#859900;
+.ace-solarized-dark .ace_keyword,
+.ace-solarized-dark .ace_meta {
+ color: #859900
}
-.ace-solarized-dark .ace_constant.ace_character {
- color:#CB4B16;
+.ace-solarized-dark .ace_constant.ace_character {
+ color: #CB4B16
}
.ace-solarized-dark .ace_constant.ace_language {
- color:#B58900;
+ color: #B58900
}
.ace-solarized-dark .ace_constant.ace_numeric {
- color:#D33682;
+ color: #D33682
}
.ace-solarized-dark .ace_constant.ace_other {
- color:#CB4B16;
+ color: #CB4B16
}
.ace-solarized-dark .ace_fold {
- background-color: #268BD2;
- border-color: #93A1A1;
+ background-color: #268BD2;
+ border-color: #93A1A1
}
.ace-solarized-dark .ace_support.ace_function {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-dark .ace_support.ace_type {
- color:#859900;
+ color: #859900
}
.ace-solarized-dark .ace_support.ace_class {
- color:#859900;
+ color: #859900
}
.ace-solarized-dark .ace_storage {
- color:#93A1A1;
+ color: #93A1A1
}
.ace-solarized-dark .ace_variable {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-dark .ace_string {
- color:#2AA198;
+ color: #2AA198
}
.ace-solarized-dark .ace_string.ace_regexp {
- color:#D30102;
+ color: #D30102
}
.ace-solarized-dark .ace_comment {
- font-style:italic;
-color:#657B83;
+ font-style: italic;
+ color: #657B83
}
.ace-solarized-dark .ace_variable.ace_language {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name {
- color:#93A1A1;
+ color: #93A1A1
}
.ace-solarized-dark .ace_entity.ace_name.ace_function {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-dark .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-solarized-dark .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db7zzBz5sz/AA82BCv7wOIDAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db7zzBz5sz/AA82BCv7wOIDAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/solarized_dark.js b/lib/ace/theme/solarized_dark.js
index 2b09b337..f2ef096b 100644
--- a/lib/ace/theme/solarized_dark.js
+++ b/lib/ace/theme/solarized_dark.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-solarized-dark";
exports.cssText = require('ace/requirejs/text!./solarized_dark.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/solarized_light.css b/lib/ace/theme/solarized_light.css
index 5f8cea3b..567f64b8 100644
--- a/lib/ace/theme/solarized_light.css
+++ b/lib/ace/theme/solarized_light.css
@@ -1,146 +1,146 @@
-
.ace-solarized-light .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-solarized-light .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-solarized-light .ace_gutter {
background: #fbf1d3;
- color: #333;
+ color: #333
}
.ace-solarized-light .ace_print_margin {
width: 1px;
- background: #e8e8e8;
+ background: #e8e8e8
}
.ace-solarized-light .ace_scroller {
- background-color: #FDF6E3;
+ background-color: #FDF6E3
}
.ace-solarized-light .ace_text-layer {
- color: #586E75;
+ color: #586E75
}
.ace-solarized-light .ace_cursor {
- border-left: 2px solid #000000;
+ border-left: 2px solid #000000
}
.ace-solarized-light .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #000000;
+ border-bottom: 1px solid #000000
}
.ace-solarized-light .ace_marker-layer .ace_selection {
- background: #073642;
+ background: #073642
}
.ace-solarized-light.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #FDF6E3;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-solarized-light .ace_marker-layer .ace_step {
- background: rgb(255, 255, 0);
+ background: rgb(255, 255, 0)
}
.ace-solarized-light .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(147, 161, 161, 0.50);
+ border: 1px solid rgba(147, 161, 161, 0.50)
}
.ace-solarized-light .ace_marker-layer .ace_active_line {
- background: #EEE8D5;
+ background: #EEE8D5
}
.ace-solarized-light .ace_gutter_active_line {
- background-color : #dcdcdc;
+ background-color : #dcdcdc
}
.ace-solarized-light .ace_marker-layer .ace_selected_word {
- border: 1px solid #073642;
+ border: 1px solid #073642
}
.ace-solarized-light .ace_invisible {
- color: rgba(147, 161, 161, 0.50);
+ color: rgba(147, 161, 161, 0.50)
}
-.ace-solarized-light .ace_keyword, .ace-solarized-light .ace_meta {
- color:#859900;
+.ace-solarized-light .ace_keyword,
+.ace-solarized-light .ace_meta {
+ color: #859900
}
-.ace-solarized-light .ace_constant.ace_character {
- color:#CB4B16;
+.ace-solarized-light .ace_constant.ace_character {
+ color: #CB4B16
}
.ace-solarized-light .ace_constant.ace_language {
- color:#B58900;
+ color: #B58900
}
.ace-solarized-light .ace_constant.ace_numeric {
- color:#D33682;
+ color: #D33682
}
.ace-solarized-light .ace_constant.ace_other {
- color:#CB4B16;
+ color: #CB4B16
}
.ace-solarized-light .ace_fold {
- background-color: #268BD2;
- border-color: #586E75;
+ background-color: #268BD2;
+ border-color: #586E75
}
.ace-solarized-light .ace_support.ace_function {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-light .ace_support.ace_type {
- color:#859900;
+ color: #859900
}
.ace-solarized-light .ace_support.ace_class {
- color:#859900;
+ color: #859900
}
.ace-solarized-light .ace_storage {
- color:#073642;
+ color: #073642
}
.ace-solarized-light .ace_variable {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-light .ace_string {
- color:#2AA198;
+ color: #2AA198
}
.ace-solarized-light .ace_string.ace_regexp {
- color:#D30102;
+ color: #D30102
}
.ace-solarized-light .ace_comment {
- color:#93A1A1;
+ color: #93A1A1
}
.ace-solarized-light .ace_variable.ace_language {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {
- color:#93A1A1;
+ color: #93A1A1
}
.ace-solarized-light .ace_entity.ace_name.ace_function {
- color:#268BD2;
+ color: #268BD2
}
.ace-solarized-light .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-solarized-light .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4++3xf4ZVq1b9BwAjxwbT1g3hiwAAAABJRU5ErkJggg==) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4++3xf4ZVq1b9BwAjxwbT1g3hiwAAAABJRU5ErkJggg==) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/solarized_light.js b/lib/ace/theme/solarized_light.js
index e4095c1e..a8e9e10f 100644
--- a/lib/ace/theme/solarized_light.js
+++ b/lib/ace/theme/solarized_light.js
@@ -34,6 +34,6 @@ exports.isDark = false;
exports.cssClass = "ace-solarized-light";
exports.cssText = require('ace/requirejs/text!./solarized_light.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/tomorrow.css b/lib/ace/theme/tomorrow.css
index e5bb2e88..fa30fe5f 100644
--- a/lib/ace/theme/tomorrow.css
+++ b/lib/ace/theme/tomorrow.css
@@ -1,180 +1,181 @@
-
.ace-tomorrow .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-tomorrow .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-tomorrow .ace_gutter {
background: #f6f6f6;
- color: #4D4D4C;
+ color: #4D4D4C
}
.ace-tomorrow .ace_print_margin {
width: 1px;
- background: #f6f6f6;
+ background: #f6f6f6
}
.ace-tomorrow .ace_scroller {
- background-color: #FFFFFF;
+ background-color: #FFFFFF
}
.ace-tomorrow .ace_text-layer {
- color: #4D4D4C;
+ color: #4D4D4C
}
.ace-tomorrow .ace_cursor {
- border-left: 2px solid #AEAFAD;
+ border-left: 2px solid #AEAFAD
}
.ace-tomorrow .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #AEAFAD;
+ border-bottom: 1px solid #AEAFAD
}
.ace-tomorrow .ace_marker-layer .ace_selection {
- background: #D6D6D6;
+ background: #D6D6D6
}
.ace-tomorrow.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #FFFFFF;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-tomorrow .ace_marker-layer .ace_step {
- background: rgb(255, 255, 0);
+ background: rgb(255, 255, 0)
}
.ace-tomorrow .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #D1D1D1;
+ border: 1px solid #D1D1D1
}
.ace-tomorrow .ace_marker-layer .ace_active_line {
- background: #EFEFEF;
+ background: #EFEFEF
}
.ace-tomorrow .ace_gutter_active_line {
- background-color : #dcdcdc;
+ background-color : #dcdcdc
}
.ace-tomorrow .ace_marker-layer .ace_selected_word {
- border: 1px solid #D6D6D6;
+ border: 1px solid #D6D6D6
}
.ace-tomorrow .ace_invisible {
- color: #D1D1D1;
+ color: #D1D1D1
}
-.ace-tomorrow .ace_keyword, .ace-tomorrow .ace_meta {
- color:#8959A8;
+.ace-tomorrow .ace_keyword,
+.ace-tomorrow .ace_meta {
+ color: #8959A8
}
.ace-tomorrow .ace_keyword.ace_operator {
- color:#3E999F;
+ color: #3E999F
}
-.ace-tomorrow .ace_constant.ace_character {
- color:#F5871F;
+.ace-tomorrow .ace_constant.ace_character {
+ color: #F5871F
}
.ace-tomorrow .ace_constant.ace_language {
- color:#F5871F;
+ color: #F5871F
}
.ace-tomorrow .ace_constant.ace_numeric {
- color:#F5871F;
+ color: #F5871F
}
.ace-tomorrow .ace_constant.ace_other {
- color:#666969;
+ color: #666969
}
.ace-tomorrow .ace_invalid {
- color:#FFFFFF;
-background-color:#C82829;
+ color: #FFFFFF;
+ background-color: #C82829
}
.ace-tomorrow .ace_invalid.ace_deprecated {
- color:#FFFFFF;
-background-color:#8959A8;
+ color: #FFFFFF;
+ background-color: #8959A8
}
.ace-tomorrow .ace_support.ace_constant {
- color:#F5871F;
+ color: #F5871F
}
.ace-tomorrow .ace_fold {
- background-color: #4271AE;
- border-color: #4D4D4C;
+ background-color: #4271AE;
+ border-color: #4D4D4C
}
.ace-tomorrow .ace_support.ace_function {
- color:#4271AE;
+ color: #4271AE
}
.ace-tomorrow .ace_support.ace_type {
- color:#C99E00;
+ color: #C99E00
}
.ace-tomorrow .ace_support.ace_class {
- color:#C99E00;
+ color: #C99E00
}
.ace-tomorrow .ace_storage {
- color:#8959A8;
+ color: #8959A8
}
-.ace-tomorrow .ace_storage.ace_type, .ace-tomorrow .ace_support.ace_type {
- color:#8959A8;
+.ace-tomorrow .ace_storage.ace_type,
+.ace-tomorrow .ace_support.ace_type {
+ color: #8959A8
}
.ace-tomorrow .ace_variable {
- color:#4271AE;
+ color: #4271AE
}
.ace-tomorrow .ace_variable.ace_parameter {
- color:#F5871F;
+ color: #F5871F
}
.ace-tomorrow .ace_string {
- color:#718C00;
+ color: #718C00
}
.ace-tomorrow .ace_string.ace_regexp {
- color:#C82829;
+ color: #C82829
}
.ace-tomorrow .ace_comment {
- color:#8E908C;
+ color: #8E908C
}
.ace-tomorrow .ace_variable {
- color:#C82829;
+ color: #C82829
}
.ace-tomorrow .ace_meta.ace_tag {
- color:#C82829;
+ color: #C82829
}
.ace-tomorrow .ace_entity.ace_other.ace_attribute-name {
- color:#C82829;
+ color: #C82829
}
.ace-tomorrow .ace_entity.ace_name.ace_function {
- color:#4271AE;
+ color: #4271AE
}
.ace-tomorrow .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-tomorrow .ace_markup.ace_heading {
- color:#718C00;
+ color: #718C00
}
.ace-tomorrow .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow.js b/lib/ace/theme/tomorrow.js
index e740a080..acf984f9 100644
--- a/lib/ace/theme/tomorrow.js
+++ b/lib/ace/theme/tomorrow.js
@@ -34,6 +34,6 @@ exports.isDark = false;
exports.cssClass = "ace-tomorrow";
exports.cssText = require('ace/requirejs/text!./tomorrow.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/tomorrow_night.css b/lib/ace/theme/tomorrow_night.css
index 90ac0f0c..5ccaf476 100644
--- a/lib/ace/theme/tomorrow_night.css
+++ b/lib/ace/theme/tomorrow_night.css
@@ -1,180 +1,181 @@
-
.ace-tomorrow-night .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-tomorrow-night .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-tomorrow-night .ace_gutter {
background: #25282c;
- color: #C5C8C6;
+ color: #C5C8C6
}
.ace-tomorrow-night .ace_print_margin {
width: 1px;
- background: #25282c;
+ background: #25282c
}
.ace-tomorrow-night .ace_scroller {
- background-color: #1D1F21;
+ background-color: #1D1F21
}
.ace-tomorrow-night .ace_text-layer {
- color: #C5C8C6;
+ color: #C5C8C6
}
.ace-tomorrow-night .ace_cursor {
- border-left: 2px solid #AEAFAD;
+ border-left: 2px solid #AEAFAD
}
.ace-tomorrow-night .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #AEAFAD;
+ border-bottom: 1px solid #AEAFAD
}
.ace-tomorrow-night .ace_marker-layer .ace_selection {
- background: #373B41;
+ background: #373B41
}
.ace-tomorrow-night.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #1D1F21;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-tomorrow-night .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-tomorrow-night .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #4B4E55;
+ border: 1px solid #4B4E55
}
.ace-tomorrow-night .ace_marker-layer .ace_active_line {
- background: #282A2E;
+ background: #282A2E
}
.ace-tomorrow-night .ace_gutter_active_line {
- background-color: #282A2E;
+ background-color: #282A2E
}
.ace-tomorrow-night .ace_marker-layer .ace_selected_word {
- border: 1px solid #373B41;
+ border: 1px solid #373B41
}
.ace-tomorrow-night .ace_invisible {
- color: #4B4E55;
+ color: #4B4E55
}
-.ace-tomorrow-night .ace_keyword, .ace-tomorrow-night .ace_meta {
- color:#B294BB;
+.ace-tomorrow-night .ace_keyword,
+.ace-tomorrow-night .ace_meta {
+ color: #B294BB
}
.ace-tomorrow-night .ace_keyword.ace_operator {
- color:#8ABEB7;
+ color: #8ABEB7
}
-.ace-tomorrow-night .ace_constant.ace_character {
- color:#DE935F;
+.ace-tomorrow-night .ace_constant.ace_character {
+ color: #DE935F
}
.ace-tomorrow-night .ace_constant.ace_language {
- color:#DE935F;
+ color: #DE935F
}
.ace-tomorrow-night .ace_constant.ace_numeric {
- color:#DE935F;
+ color: #DE935F
}
.ace-tomorrow-night .ace_constant.ace_other {
- color:#CED1CF;
+ color: #CED1CF
}
.ace-tomorrow-night .ace_invalid {
- color:#CED2CF;
-background-color:#DF5F5F;
+ color: #CED2CF;
+ background-color: #DF5F5F
}
.ace-tomorrow-night .ace_invalid.ace_deprecated {
- color:#CED2CF;
-background-color:#B798BF;
+ color: #CED2CF;
+ background-color: #B798BF
}
.ace-tomorrow-night .ace_support.ace_constant {
- color:#DE935F;
+ color: #DE935F
}
.ace-tomorrow-night .ace_fold {
- background-color: #81A2BE;
- border-color: #C5C8C6;
+ background-color: #81A2BE;
+ border-color: #C5C8C6
}
.ace-tomorrow-night .ace_support.ace_function {
- color:#81A2BE;
+ color: #81A2BE
}
.ace-tomorrow-night .ace_support.ace_type {
- color:#F0C674;
+ color: #F0C674
}
.ace-tomorrow-night .ace_support.ace_class {
- color:#F0C674;
+ color: #F0C674
}
.ace-tomorrow-night .ace_storage {
- color:#B294BB;
+ color: #B294BB
}
-.ace-tomorrow-night .ace_storage.ace_type, .ace-tomorrow-night .ace_support.ace_type {
- color:#B294BB;
+.ace-tomorrow-night .ace_storage.ace_type,
+.ace-tomorrow-night .ace_support.ace_type {
+ color: #B294BB
}
.ace-tomorrow-night .ace_variable {
- color:#81A2BE;
+ color: #81A2BE
}
.ace-tomorrow-night .ace_variable.ace_parameter {
- color:#DE935F;
+ color: #DE935F
}
.ace-tomorrow-night .ace_string {
- color:#B5BD68;
+ color: #B5BD68
}
.ace-tomorrow-night .ace_string.ace_regexp {
- color:#CC6666;
+ color: #CC6666
}
.ace-tomorrow-night .ace_comment {
- color:#969896;
+ color: #969896
}
.ace-tomorrow-night .ace_variable {
- color:#CC6666;
+ color: #CC6666
}
.ace-tomorrow-night .ace_meta.ace_tag {
- color:#CC6666;
+ color: #CC6666
}
.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name {
- color:#CC6666;
+ color: #CC6666
}
.ace-tomorrow-night .ace_entity.ace_name.ace_function {
- color:#81A2BE;
+ color: #81A2BE
}
.ace-tomorrow-night .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-tomorrow-night .ace_markup.ace_heading {
- color:#B5BD68;
+ color: #B5BD68
}
.ace-tomorrow-night .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlVf8z7Bq1ar/AA/hBFp7egmpAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlVf8z7Bq1ar/AA/hBFp7egmpAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night.js b/lib/ace/theme/tomorrow_night.js
index b943b414..f3fcdbc9 100644
--- a/lib/ace/theme/tomorrow_night.js
+++ b/lib/ace/theme/tomorrow_night.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-tomorrow-night";
exports.cssText = require('ace/requirejs/text!./tomorrow_night.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/tomorrow_night_blue.css b/lib/ace/theme/tomorrow_night_blue.css
index 17821602..45d7ccb1 100644
--- a/lib/ace/theme/tomorrow_night_blue.css
+++ b/lib/ace/theme/tomorrow_night_blue.css
@@ -1,180 +1,181 @@
-
.ace-tomorrow-night-blue .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-tomorrow-night-blue .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-tomorrow-night-blue .ace_gutter {
background: #00204b;
- color: #7388b5;
+ color: #7388b5
}
.ace-tomorrow-night-blue .ace_print_margin {
width: 1px;
- background: #00204b;
+ background: #00204b
}
.ace-tomorrow-night-blue .ace_scroller {
- background-color: #002451;
+ background-color: #002451
}
.ace-tomorrow-night-blue .ace_text-layer {
- color: #FFFFFF;
+ color: #FFFFFF
}
.ace-tomorrow-night-blue .ace_cursor {
- border-left: 2px solid #FFFFFF;
+ border-left: 2px solid #FFFFFF
}
.ace-tomorrow-night-blue .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF
}
.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {
- background: #003F8E;
+ background: #003F8E
}
.ace-tomorrow-night-blue.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #002451;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-tomorrow-night-blue .ace_marker-layer .ace_step {
- background: rgb(127, 111, 19);
+ background: rgb(127, 111, 19)
}
.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #404F7D;
+ border: 1px solid #404F7D
}
.ace-tomorrow-night-blue .ace_marker-layer .ace_active_line {
- background: #00346E;
+ background: #00346E
}
.ace-tomorrow-night-blue .ace_gutter_active_line {
- background-color: #022040;
+ background-color: #022040
}
.ace-tomorrow-night-blue .ace_marker-layer .ace_selected_word {
- border: 1px solid #003F8E;
+ border: 1px solid #003F8E
}
.ace-tomorrow-night-blue .ace_invisible {
- color: #404F7D;
+ color: #404F7D
}
-.ace-tomorrow-night-blue .ace_keyword, .ace-tomorrow-night-blue .ace_meta {
- color:#EBBBFF;
+.ace-tomorrow-night-blue .ace_keyword,
+.ace-tomorrow-night-blue .ace_meta {
+ color: #EBBBFF
}
.ace-tomorrow-night-blue .ace_keyword.ace_operator {
- color:#99FFFF;
+ color: #99FFFF
}
-.ace-tomorrow-night-blue .ace_constant.ace_character {
- color:#FFC58F;
+.ace-tomorrow-night-blue .ace_constant.ace_character {
+ color: #FFC58F
}
.ace-tomorrow-night-blue .ace_constant.ace_language {
- color:#FFC58F;
+ color: #FFC58F
}
.ace-tomorrow-night-blue .ace_constant.ace_numeric {
- color:#FFC58F;
+ color: #FFC58F
}
.ace-tomorrow-night-blue .ace_constant.ace_other {
- color:#FFFFFF;
+ color: #FFFFFF
}
.ace-tomorrow-night-blue .ace_invalid {
- color:#FFFFFF;
-background-color:#F99DA5;
+ color: #FFFFFF;
+ background-color: #F99DA5
}
.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {
- color:#FFFFFF;
-background-color:#EBBBFF;
+ color: #FFFFFF;
+ background-color: #EBBBFF
}
.ace-tomorrow-night-blue .ace_support.ace_constant {
- color:#FFC58F;
+ color: #FFC58F
}
.ace-tomorrow-night-blue .ace_fold {
- background-color: #BBDAFF;
- border-color: #FFFFFF;
+ background-color: #BBDAFF;
+ border-color: #FFFFFF
}
.ace-tomorrow-night-blue .ace_support.ace_function {
- color:#BBDAFF;
+ color: #BBDAFF
}
.ace-tomorrow-night-blue .ace_support.ace_type {
- color:#FFEEAD;
+ color: #FFEEAD
}
.ace-tomorrow-night-blue .ace_support.ace_class {
- color:#FFEEAD;
+ color: #FFEEAD
}
.ace-tomorrow-night-blue .ace_storage {
- color:#EBBBFF;
+ color: #EBBBFF
}
-.ace-tomorrow-night-blue .ace_storage.ace_type, .ace-tomorrow-night-blue .ace_support.ace_type {
- color:#EBBBFF;
+.ace-tomorrow-night-blue .ace_storage.ace_type,
+.ace-tomorrow-night-blue .ace_support.ace_type {
+ color: #EBBBFF
}
.ace-tomorrow-night-blue .ace_variable {
- color:#BBDAFF;
+ color: #BBDAFF
}
.ace-tomorrow-night-blue .ace_variable.ace_parameter {
- color:#FFC58F;
+ color: #FFC58F
}
.ace-tomorrow-night-blue .ace_string {
- color:#D1F1A9;
+ color: #D1F1A9
}
.ace-tomorrow-night-blue .ace_string.ace_regexp {
- color:#FF9DA4;
+ color: #FF9DA4
}
.ace-tomorrow-night-blue .ace_comment {
- color:#7285B7;
+ color: #7285B7
}
.ace-tomorrow-night-blue .ace_variable {
- color:#FF9DA4;
+ color: #FF9DA4
}
.ace-tomorrow-night-blue .ace_meta.ace_tag {
- color:#FF9DA4;
+ color: #FF9DA4
}
.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name {
- color:#FF9DA4;
+ color: #FF9DA4
}
.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function {
- color:#BBDAFF;
+ color: #BBDAFF
}
.ace-tomorrow-night-blue .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-tomorrow-night-blue .ace_markup.ace_heading {
- color:#D1F1A9;
+ color: #D1F1A9
}
.ace-tomorrow-night-blue .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUAn8z7Bq1ar/ABBUBHJ4/r3JAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUAn8z7Bq1ar/ABBUBHJ4/r3JAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night_blue.js b/lib/ace/theme/tomorrow_night_blue.js
index e3874f09..0b496d20 100644
--- a/lib/ace/theme/tomorrow_night_blue.js
+++ b/lib/ace/theme/tomorrow_night_blue.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-tomorrow-night-blue";
exports.cssText = require('ace/requirejs/text!./tomorrow_night_blue.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/tomorrow_night_bright.css b/lib/ace/theme/tomorrow_night_bright.css
index f200e37a..af08f92d 100644
--- a/lib/ace/theme/tomorrow_night_bright.css
+++ b/lib/ace/theme/tomorrow_night_bright.css
@@ -1,180 +1,181 @@
-
.ace-tomorrow-night-bright .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-tomorrow-night-bright .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-tomorrow-night-bright .ace_gutter {
background: #1a1a1a;
- color: #DEDEDE;
+ color: #DEDEDE
}
.ace-tomorrow-night-bright .ace_print_margin {
width: 1px;
- background: #1a1a1a;
+ background: #1a1a1a
}
.ace-tomorrow-night-bright .ace_scroller {
- background-color: #000000;
+ background-color: #000000
}
.ace-tomorrow-night-bright .ace_text-layer {
- color: #DEDEDE;
+ color: #DEDEDE
}
.ace-tomorrow-night-bright .ace_cursor {
- border-left: 2px solid #9F9F9F;
+ border-left: 2px solid #9F9F9F
}
.ace-tomorrow-night-bright .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #9F9F9F;
+ border-bottom: 1px solid #9F9F9F
}
.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {
- background: #424242;
+ background: #424242
}
.ace-tomorrow-night-bright.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #000000;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-tomorrow-night-bright .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #343434;
+ border: 1px solid #343434
}
.ace-tomorrow-night-bright .ace_marker-layer .ace_active_line {
- background: #2A2A2A;
+ background: #2A2A2A
}
.ace-tomorrow-night-bright .ace_gutter_active_line {
- background-color: #2A2A2A;
+ background-color: #2A2A2A
}
.ace-tomorrow-night-bright .ace_marker-layer .ace_selected_word {
- border: 1px solid #424242;
+ border: 1px solid #424242
}
.ace-tomorrow-night-bright .ace_invisible {
- color: #343434;
+ color: #343434
}
-.ace-tomorrow-night-bright .ace_keyword, .ace-tomorrow-night-bright .ace_meta {
- color:#C397D8;
+.ace-tomorrow-night-bright .ace_keyword,
+.ace-tomorrow-night-bright .ace_meta {
+ color: #C397D8
}
.ace-tomorrow-night-bright .ace_keyword.ace_operator {
- color:#70C0B1;
+ color: #70C0B1
}
-.ace-tomorrow-night-bright .ace_constant.ace_character {
- color:#E78C45;
+.ace-tomorrow-night-bright .ace_constant.ace_character {
+ color: #E78C45
}
.ace-tomorrow-night-bright .ace_constant.ace_language {
- color:#E78C45;
+ color: #E78C45
}
.ace-tomorrow-night-bright .ace_constant.ace_numeric {
- color:#E78C45;
+ color: #E78C45
}
.ace-tomorrow-night-bright .ace_constant.ace_other {
- color:#EEEEEE;
+ color: #EEEEEE
}
.ace-tomorrow-night-bright .ace_invalid {
- color:#CED2CF;
-background-color:#DF5F5F;
+ color: #CED2CF;
+ background-color: #DF5F5F
}
.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {
- color:#CED2CF;
-background-color:#B798BF;
+ color: #CED2CF;
+ background-color: #B798BF
}
.ace-tomorrow-night-bright .ace_support.ace_constant {
- color:#E78C45;
+ color: #E78C45
}
.ace-tomorrow-night-bright .ace_fold {
- background-color: #7AA6DA;
- border-color: #DEDEDE;
+ background-color: #7AA6DA;
+ border-color: #DEDEDE
}
.ace-tomorrow-night-bright .ace_support.ace_function {
- color:#7AA6DA;
+ color: #7AA6DA
}
.ace-tomorrow-night-bright .ace_support.ace_type {
- color:#E7C547;
+ color: #E7C547
}
.ace-tomorrow-night-bright .ace_support.ace_class {
- color:#E7C547;
+ color: #E7C547
}
.ace-tomorrow-night-bright .ace_storage {
- color:#C397D8;
+ color: #C397D8
}
-.ace-tomorrow-night-bright .ace_storage.ace_type, .ace-tomorrow-night-bright .ace_support.ace_type {
- color:#C397D8;
+.ace-tomorrow-night-bright .ace_storage.ace_type,
+.ace-tomorrow-night-bright .ace_support.ace_type {
+ color: #C397D8
}
.ace-tomorrow-night-bright .ace_variable {
- color:#7AA6DA;
+ color: #7AA6DA
}
.ace-tomorrow-night-bright .ace_variable.ace_parameter {
- color:#E78C45;
+ color: #E78C45
}
.ace-tomorrow-night-bright .ace_string {
- color:#B9CA4A;
+ color: #B9CA4A
}
.ace-tomorrow-night-bright .ace_string.ace_regexp {
- color:#D54E53;
+ color: #D54E53
}
.ace-tomorrow-night-bright .ace_comment {
- color:#969896;
+ color: #969896
}
.ace-tomorrow-night-bright .ace_variable {
- color:#D54E53;
+ color: #D54E53
}
.ace-tomorrow-night-bright .ace_meta.ace_tag {
- color:#D54E53;
+ color: #D54E53
}
.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name {
- color:#D54E53;
+ color: #D54E53
}
.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function {
- color:#7AA6DA;
+ color: #7AA6DA
}
.ace-tomorrow-night-bright .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-tomorrow-night-bright .ace_markup.ace_heading {
- color:#B9CA4A;
+ color: #B9CA4A
}
.ace-tomorrow-night-bright .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGD4z7Bq1ar/AAz9A/2naJQKAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGD4z7Bq1ar/AAz9A/2naJQKAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night_bright.js b/lib/ace/theme/tomorrow_night_bright.js
index 5f18ee44..18bc4aa9 100644
--- a/lib/ace/theme/tomorrow_night_bright.js
+++ b/lib/ace/theme/tomorrow_night_bright.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-tomorrow-night-bright";
exports.cssText = require('ace/requirejs/text!./tomorrow_night_bright.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/tomorrow_night_eighties.css b/lib/ace/theme/tomorrow_night_eighties.css
index 6dfdbbd1..64223ab0 100644
--- a/lib/ace/theme/tomorrow_night_eighties.css
+++ b/lib/ace/theme/tomorrow_night_eighties.css
@@ -1,176 +1,177 @@
-
.ace-tomorrow-night-eighties .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-tomorrow-night-eighties .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-tomorrow-night-eighties .ace_gutter {
background: #272727;
- color: #CCC;
+ color: #CCC
}
.ace-tomorrow-night-eighties .ace_print_margin {
width: 1px;
- background: #272727;
+ background: #272727
}
.ace-tomorrow-night-eighties .ace_scroller {
- background-color: #2D2D2D;
+ background-color: #2D2D2D
}
.ace-tomorrow-night-eighties .ace_text-layer {
- color: #CCCCCC;
+ color: #CCCCCC
}
.ace-tomorrow-night-eighties .ace_cursor {
- border-left: 2px solid #CCCCCC;
+ border-left: 2px solid #CCCCCC
}
.ace-tomorrow-night-eighties .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #CCCCCC;
+ border-bottom: 1px solid #CCCCCC
}
.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {
- background: #515151;
+ background: #515151
}
.ace-tomorrow-night-eighties.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #2D2D2D;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #6A6A6A;
+ border: 1px solid #6A6A6A
}
.ace-tomorrow-night-eighties .ace_marker-layer .ace_active_line {
- background: #393939;
+ background: #393939
}
.ace-tomorrow-night-eighties .ace_gutter_active_line {
- background-color: #393939;
+ background-color: #393939
}
.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected_word {
- border: 1px solid #515151;
+ border: 1px solid #515151
}
.ace-tomorrow-night-eighties .ace_invisible {
- color: #6A6A6A;
+ color: #6A6A6A
}
-.ace-tomorrow-night-eighties .ace_keyword, .ace-tomorrow-night-eighties .ace_meta {
- color:#CC99CC;
+.ace-tomorrow-night-eighties .ace_keyword,
+.ace-tomorrow-night-eighties .ace_meta {
+ color: #CC99CC
}
.ace-tomorrow-night-eighties .ace_keyword.ace_operator {
- color:#66CCCC;
+ color: #66CCCC
}
-.ace-tomorrow-night-eighties .ace_constant.ace_character {
- color:#F99157;
+.ace-tomorrow-night-eighties .ace_constant.ace_character {
+ color: #F99157
}
.ace-tomorrow-night-eighties .ace_constant.ace_language {
- color:#F99157;
+ color: #F99157
}
.ace-tomorrow-night-eighties .ace_constant.ace_numeric {
- color:#F99157;
+ color: #F99157
}
.ace-tomorrow-night-eighties .ace_constant.ace_other {
- color:#CCCCCC;
+ color: #CCCCCC
}
.ace-tomorrow-night-eighties .ace_invalid {
- color:#CDCDCD;
-background-color:#F2777A;
+ color: #CDCDCD;
+ background-color: #F2777A
}
.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {
- color:#CDCDCD;
-background-color:#CC99CC;
+ color: #CDCDCD;
+ background-color: #CC99CC
}
.ace-tomorrow-night-eighties .ace_support.ace_constant {
- color:#F99157;
+ color: #F99157
}
.ace-tomorrow-night-eighties .ace_fold {
- background-color: #6699CC;
- border-color: #CCCCCC;
+ background-color: #6699CC;
+ border-color: #CCCCCC
}
.ace-tomorrow-night-eighties .ace_support.ace_function {
- color:#6699CC;
+ color: #6699CC
}
.ace-tomorrow-night-eighties .ace_support.ace_type {
- color:#FFCC66;
+ color: #FFCC66
}
.ace-tomorrow-night-eighties .ace_support.ace_class {
- color:#FFCC66;
+ color: #FFCC66
}
.ace-tomorrow-night-eighties .ace_storage {
- color:#CC99CC;
+ color: #CC99CC
}
-.ace-tomorrow-night-eighties .ace_storage.ace_type, .ace-tomorrow-night-eighties .ace_support.ace_type {
- color:#CC99CC;
+.ace-tomorrow-night-eighties .ace_storage.ace_type,
+.ace-tomorrow-night-eighties .ace_support.ace_type {
+ color: #CC99CC
}
.ace-tomorrow-night-eighties .ace_variable {
- color:#6699CC;
+ color: #6699CC
}
.ace-tomorrow-night-eighties .ace_variable.ace_parameter {
- color:#F99157;
+ color: #F99157
}
.ace-tomorrow-night-eighties .ace_string {
- color:#99CC99;
+ color: #99CC99
}
.ace-tomorrow-night-eighties .ace_comment {
- color:#999999;
+ color: #999999
}
.ace-tomorrow-night-eighties .ace_variable {
- color:#F2777A;
+ color: #F2777A
}
.ace-tomorrow-night-eighties .ace_meta.ace_tag {
- color:#F2777A;
+ color: #F2777A
}
.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name {
- color:#F2777A;
+ color: #F2777A
}
.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function {
- color:#6699CC;
+ color: #6699CC
}
.ace-tomorrow-night-eighties .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-tomorrow-night-eighties .ace_markup.ace_heading {
- color:#99CC99;
+ color: #99CC99
}
.ace-tomorrow-night-eighties .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ1dX9z7Bq1ar/ABE1BITwhhuFAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ1dX9z7Bq1ar/ABE1BITwhhuFAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night_eighties.js b/lib/ace/theme/tomorrow_night_eighties.js
index fff11892..8217cdbd 100644
--- a/lib/ace/theme/tomorrow_night_eighties.js
+++ b/lib/ace/theme/tomorrow_night_eighties.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-tomorrow-night-eighties";
exports.cssText = require('ace/requirejs/text!./tomorrow_night_eighties.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/twilight.css b/lib/ace/theme/twilight.css
index 70794da6..b19eb085 100644
--- a/lib/ace/theme/twilight.css
+++ b/lib/ace/theme/twilight.css
@@ -1,166 +1,167 @@
-
.ace-twilight .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-twilight .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-twilight .ace_gutter {
background: #232323;
- color: #E2E2E2;
+ color: #E2E2E2
}
.ace-twilight .ace_print_margin {
width: 1px;
- background: #232323;
+ background: #232323
}
.ace-twilight .ace_scroller {
- background-color: #141414;
+ background-color: #141414
}
.ace-twilight .ace_text-layer {
- color: #F8F8F8;
+ color: #F8F8F8
}
.ace-twilight .ace_cursor {
- border-left: 2px solid #A7A7A7;
+ border-left: 2px solid #A7A7A7
}
.ace-twilight .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #A7A7A7;
+ border-bottom: 1px solid #A7A7A7
}
.ace-twilight .ace_marker-layer .ace_selection {
- background: rgba(221, 240, 255, 0.20);
+ background: rgba(221, 240, 255, 0.20)
}
.ace-twilight.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #141414;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-twilight .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-twilight .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid rgba(255, 255, 255, 0.25);
+ border: 1px solid rgba(255, 255, 255, 0.25)
}
.ace-twilight .ace_marker-layer .ace_active_line {
- background: rgba(255, 255, 255, 0.031);
+ background: rgba(255, 255, 255, 0.031)
}
.ace-twilight .ace_gutter_active_line {
- background-color: rgba(255, 255, 255, 0.031);
+ background-color: rgba(255, 255, 255, 0.031)
}
.ace-twilight .ace_marker-layer .ace_selected_word {
- border: 1px solid rgba(221, 240, 255, 0.20);
+ border: 1px solid rgba(221, 240, 255, 0.20)
}
.ace-twilight .ace_invisible {
- color: rgba(255, 255, 255, 0.25);
+ color: rgba(255, 255, 255, 0.25)
}
-.ace-twilight .ace_keyword, .ace-twilight .ace_meta {
- color:#CDA869;
+.ace-twilight .ace_keyword,
+.ace-twilight .ace_meta {
+ color: #CDA869
}
-.ace-twilight .ace_constant, .ace-twilight .ace_constant.ace_other {
- color:#CF6A4C;
+.ace-twilight .ace_constant,
+.ace-twilight .ace_constant.ace_other {
+ color: #CF6A4C
}
-.ace-twilight .ace_constant.ace_character, {
- color:#CF6A4C;
+.ace-twilight .ace_constant.ace_character {
+ color: #CF6A4C
}
-.ace-twilight .ace_constant.ace_character.ace_escape, {
- color:#CF6A4C;
+.ace-twilight .ace_constant.ace_character.ace_escape {
+ color: #CF6A4C
}
.ace-twilight .ace_invalid.ace_illegal {
- color:#F8F8F8;
-background-color:rgba(86, 45, 86, 0.75);
+ color: #F8F8F8;
+ background-color: rgba(86, 45, 86, 0.75)
}
.ace-twilight .ace_invalid.ace_deprecated {
- text-decoration:underline;
-font-style:italic;
-color:#D2A8A1;
+ text-decoration: underline;
+ font-style: italic;
+ color: #D2A8A1
}
.ace-twilight .ace_support {
- color:#9B859D;
+ color: #9B859D
}
.ace-twilight .ace_support.ace_constant {
- color:#CF6A4C;
+ color: #CF6A4C
}
.ace-twilight .ace_fold {
- background-color: #AC885B;
- border-color: #F8F8F8;
+ background-color: #AC885B;
+ border-color: #F8F8F8
}
.ace-twilight .ace_support.ace_function {
- color:#DAD085;
+ color: #DAD085
}
.ace-twilight .ace_storage {
- color:#F9EE98;
+ color: #F9EE98
}
.ace-twilight .ace_variable {
- color:#AC885B;
+ color: #AC885B
}
.ace-twilight .ace_string {
- color:#8F9D6A;
+ color: #8F9D6A
}
.ace-twilight .ace_string.ace_regexp {
- color:#E9C062;
+ color: #E9C062
}
.ace-twilight .ace_comment {
- font-style:italic;
-color:#5F5A60;
+ font-style: italic;
+ color: #5F5A60
}
.ace-twilight .ace_variable {
- color:#7587A6;
+ color: #7587A6
}
.ace-twilight .ace_xml_pe {
- color:#494949;
+ color: #494949
}
.ace-twilight .ace_meta.ace_tag {
- color:#AC885B;
+ color: #AC885B
}
.ace-twilight .ace_entity.ace_name.ace_function {
- color:#AC885B;
+ color: #AC885B
}
.ace-twilight .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-twilight .ace_markup.ace_heading {
- color:#CF6A4C;
+ color: #CF6A4C
}
.ace-twilight .ace_markup.ace_list {
- color:#F9EE98;
+ color: #F9EE98
}
.ace-twilight .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERH5zzBz5sz/AA5EBAYqeZXWAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERH5zzBz5sz/AA5EBAYqeZXWAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/twilight.js b/lib/ace/theme/twilight.js
index 766ba9b3..5c1d3eef 100644
--- a/lib/ace/theme/twilight.js
+++ b/lib/ace/theme/twilight.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-twilight";
exports.cssText = require('ace/requirejs/text!./twilight.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
diff --git a/lib/ace/theme/vibrant_ink.css b/lib/ace/theme/vibrant_ink.css
index 08993a63..fcfb7889 100644
--- a/lib/ace/theme/vibrant_ink.css
+++ b/lib/ace/theme/vibrant_ink.css
@@ -1,145 +1,146 @@
-
.ace-vibrant-ink .ace_editor {
- border: 2px solid rgb(159, 159, 159);
+ border: 2px solid rgb(159, 159, 159)
}
.ace-vibrant-ink .ace_editor.ace_focus {
- border: 2px solid #327fbd;
+ border: 2px solid #327fbd
}
.ace-vibrant-ink .ace_gutter {
background: #1a1a1a;
- color: #BEBEBE;
+ color: #BEBEBE
}
.ace-vibrant-ink .ace_print_margin {
width: 1px;
- background: #1a1a1a;
+ background: #1a1a1a
}
.ace-vibrant-ink .ace_scroller {
- background-color: #0F0F0F;
+ background-color: #0F0F0F
}
.ace-vibrant-ink .ace_text-layer {
- color: #FFFFFF;
+ color: #FFFFFF
}
.ace-vibrant-ink .ace_cursor {
- border-left: 2px solid #FFFFFF;
+ border-left: 2px solid #FFFFFF
}
.ace-vibrant-ink .ace_cursor.ace_overwrite {
border-left: 0px;
- border-bottom: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF
}
.ace-vibrant-ink .ace_marker-layer .ace_selection {
- background: #6699CC;
+ background: #6699CC
}
.ace-vibrant-ink.multiselect .ace_selection.start {
box-shadow: 0 0 3px 0px #0F0F0F;
- border-radius: 2px;
+ border-radius: 2px
}
.ace-vibrant-ink .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0);
+ background: rgb(102, 82, 0)
}
.ace-vibrant-ink .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
- border: 1px solid #404040;
+ border: 1px solid #404040
}
.ace-vibrant-ink .ace_marker-layer .ace_active_line {
- background: #333333;
+ background: #333333
}
.ace-vibrant-ink .ace_gutter_active_line {
- background-color: #333333;
+ background-color: #333333
}
.ace-vibrant-ink .ace_marker-layer .ace_selected_word {
- border: 1px solid #6699CC;
+ border: 1px solid #6699CC
}
.ace-vibrant-ink .ace_invisible {
- color: #404040;
+ color: #404040
}
-.ace-vibrant-ink .ace_keyword, .ace-vibrant-ink .ace_meta {
- color:#FF6600;
+.ace-vibrant-ink .ace_keyword,
+.ace-vibrant-ink .ace_meta {
+ color: #FF6600
}
-.ace-vibrant-ink .ace_constant, .ace-vibrant-ink .ace_constant.ace_other {
- color:#339999;
+.ace-vibrant-ink .ace_constant,
+.ace-vibrant-ink .ace_constant.ace_other {
+ color: #339999
}
-.ace-vibrant-ink .ace_constant.ace_character, {
- color:#339999;
+.ace-vibrant-ink .ace_constant.ace_character {
+ color: #339999
}
-.ace-vibrant-ink .ace_constant.ace_character.ace_escape, {
- color:#339999;
+.ace-vibrant-ink .ace_constant.ace_character.ace_escape {
+ color: #339999
}
.ace-vibrant-ink .ace_constant.ace_numeric {
- color:#99CC99;
+ color: #99CC99
}
.ace-vibrant-ink .ace_invalid {
- color:#CCFF33;
-background-color:#000000;
+ color: #CCFF33;
+ background-color: #000000
}
.ace-vibrant-ink .ace_invalid.ace_deprecated {
- color:#CCFF33;
-background-color:#000000;
+ color: #CCFF33;
+ background-color: #000000
}
.ace-vibrant-ink .ace_fold {
- background-color: #FFCC00;
- border-color: #FFFFFF;
+ background-color: #FFCC00;
+ border-color: #FFFFFF
}
.ace-vibrant-ink .ace_support.ace_function {
- color:#FFCC00;
+ color: #FFCC00
}
.ace-vibrant-ink .ace_variable {
- color:#FFCC00;
+ color: #FFCC00
}
.ace-vibrant-ink .ace_variable.ace_parameter {
- font-style:italic;
+ font-style: italic
}
.ace-vibrant-ink .ace_string {
- color:#66FF00;
+ color: #66FF00
}
.ace-vibrant-ink .ace_string.ace_regexp {
- color:#44B4CC;
+ color: #44B4CC
}
.ace-vibrant-ink .ace_comment {
- color:#9933CC;
+ color: #9933CC
}
.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {
- font-style:italic;
-color:#99CC99;
+ font-style: italic;
+ color: #99CC99
}
.ace-vibrant-ink .ace_entity.ace_name.ace_function {
- color:#FFCC00;
+ color: #FFCC00
}
.ace-vibrant-ink .ace_markup.ace_underline {
- text-decoration:underline;
+ text-decoration: underline
}
.ace-vibrant-ink .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5+f/z7Bq1ar/AA5lBCqoLxsgAAAAAElFTkSuQmCC) right repeat-y;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5+f/z7Bq1ar/AA5lBCqoLxsgAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/vibrant_ink.js b/lib/ace/theme/vibrant_ink.js
index 28bd0496..584f8d29 100644
--- a/lib/ace/theme/vibrant_ink.js
+++ b/lib/ace/theme/vibrant_ink.js
@@ -34,6 +34,6 @@ exports.isDark = true;
exports.cssClass = "ace-vibrant-ink";
exports.cssText = require('ace/requirejs/text!./vibrant_ink.css');
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
});
From 021d169fbe4aee6b669d7c15847f02d4b8986757 Mon Sep 17 00:00:00 2001
From: nightwing
Date: Tue, 18 Sep 2012 23:28:33 +0400
Subject: [PATCH 040/165] remove redundant rules from themes
---
lib/ace/css/editor.css | 12 ++
lib/ace/theme/chrome.css | 3 -
lib/ace/theme/clouds.css | 15 +-
lib/ace/theme/clouds_midnight.css | 15 +-
lib/ace/theme/cobalt.css | 10 +-
lib/ace/theme/dawn.css | 15 +-
lib/ace/theme/dreamweaver.css | 3 -
lib/ace/theme/idle_fingers.css | 17 +-
lib/ace/theme/kr_theme.css | 10 +-
lib/ace/theme/merbivore.css | 46 ++---
lib/ace/theme/merbivore_soft.css | 53 ++----
lib/ace/theme/mono_industrial.css | 44 +----
lib/ace/theme/monokai.css | 50 +----
lib/ace/theme/pastel_on_dark.css | 24 +--
lib/ace/theme/solarized_dark.css | 51 ++---
lib/ace/theme/solarized_light.css | 41 +----
lib/ace/theme/textmate.css | 3 -
lib/ace/theme/tomorrow.css | 77 ++------
lib/ace/theme/tomorrow_night.css | 77 ++------
lib/ace/theme/tomorrow_night_blue.css | 82 ++-------
lib/ace/theme/tomorrow_night_bright.css | 77 ++------
lib/ace/theme/tomorrow_night_eighties.css | 75 ++------
lib/ace/theme/twilight.css | 37 +---
lib/ace/theme/vibrant_ink.css | 30 +--
tool/Theme.tmpl.css | 215 ----------------------
tool/tmlanguage.js | 8 +-
tool/tmtheme.js | 139 +++++++++-----
27 files changed, 306 insertions(+), 923 deletions(-)
diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css
index 9891976a..015cff6c 100644
--- a/lib/ace/css/editor.css
+++ b/lib/ace/css/editor.css
@@ -343,3 +343,15 @@
transition: opacity 0.05s ease 0.05s;
opacity:1;
}
+
+.ace_underline {
+ text-decoration: underline;
+}
+
+.ace_bold {
+ font-weight: bold;
+}
+
+.ace_italic {
+ font-style: italic;
+}
diff --git a/lib/ace/theme/chrome.css b/lib/ace/theme/chrome.css
index 7c0ed3bd..2b8d60f9 100644
--- a/lib/ace/theme/chrome.css
+++ b/lib/ace/theme/chrome.css
@@ -104,9 +104,6 @@
color: #0000A2;
}
-.ace-chrome .ace_markup.ace_underline {
- text-decoration:underline;
-}
.ace-chrome .ace_markup.ace_heading {
color: rgb(12, 7, 255);
diff --git a/lib/ace/theme/clouds.css b/lib/ace/theme/clouds.css
index 16fac9c6..2fdc0815 100644
--- a/lib/ace/theme/clouds.css
+++ b/lib/ace/theme/clouds.css
@@ -93,18 +93,11 @@
border-color: #000000
}
-.ace-clouds .ace_support.ace_function {
- color: #C52727
-}
-
-.ace-clouds .ace_support.ace_function,
+.ace-clouds .ace_storage,
.ace-clouds .ace_support.ace_class,
-.ace-clouds .ace_support.ace_type,
-.ace-clouds .ace_support.ace_other {
- color: #C52727
-}
-
-.ace-clouds .ace_storage {
+.ace-clouds .ace_support.ace_function,
+.ace-clouds .ace_support.ace_other,
+.ace-clouds .ace_support.ace_type {
color: #C52727
}
diff --git a/lib/ace/theme/clouds_midnight.css b/lib/ace/theme/clouds_midnight.css
index 6a5009aa..2d4ea2d1 100644
--- a/lib/ace/theme/clouds_midnight.css
+++ b/lib/ace/theme/clouds_midnight.css
@@ -94,18 +94,11 @@
border-color: #929292
}
-.ace-clouds-midnight .ace_support.ace_function {
- color: #E92E2E
-}
-
-.ace-clouds-midnight .ace_support.ace_function,
+.ace-clouds-midnight .ace_storage,
.ace-clouds-midnight .ace_support.ace_class,
-.ace-clouds-midnight .ace_support.ace_type,
-.ace-clouds-midnight .ace_support.ace_other {
- color: #E92E2E
-}
-
-.ace-clouds-midnight .ace_storage {
+.ace-clouds-midnight .ace_support.ace_function,
+.ace-clouds-midnight .ace_support.ace_other,
+.ace-clouds-midnight .ace_support.ace_type {
color: #E92E2E
}
diff --git a/lib/ace/theme/cobalt.css b/lib/ace/theme/cobalt.css
index d23d3aef..0ebfa6fc 100644
--- a/lib/ace/theme/cobalt.css
+++ b/lib/ace/theme/cobalt.css
@@ -73,18 +73,12 @@
}
.ace-cobalt .ace_constant,
+.ace-cobalt .ace_constant.ace_character,
+.ace-cobalt .ace_constant.ace_character.ace_escape,
.ace-cobalt .ace_constant.ace_other {
color: #FF628C
}
-.ace-cobalt .ace_constant.ace_character {
- color: #FF628C
-}
-
-.ace-cobalt .ace_constant.ace_character.ace_escape {
- color: #FF628C
-}
-
.ace-cobalt .ace_invalid {
color: #F8F8F8;
background-color: #800F00
diff --git a/lib/ace/theme/dawn.css b/lib/ace/theme/dawn.css
index 0d14dbf3..6c84998b 100644
--- a/lib/ace/theme/dawn.css
+++ b/lib/ace/theme/dawn.css
@@ -73,18 +73,12 @@
}
.ace-dawn .ace_constant,
+.ace-dawn .ace_constant.ace_character,
+.ace-dawn .ace_constant.ace_character.ace_escape,
.ace-dawn .ace_constant.ace_other {
color: #811F24
}
-.ace-dawn .ace_constant.ace_character {
- color: #811F24
-}
-
-.ace-dawn .ace_constant.ace_character.ace_escape {
- color: #811F24
-}
-
.ace-dawn .ace_invalid.ace_illegal {
text-decoration: underline;
font-style: italic;
@@ -111,6 +105,7 @@
border-color: #080808
}
+.ace-dawn .ace_markup.ace_list,
.ace-dawn .ace_support.ace_function {
color: #693A17
}
@@ -145,10 +140,6 @@
color: #19356D
}
-.ace-dawn .ace_markup.ace_list {
- color: #693A17
-}
-
.ace-dawn .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4+fPnf4ZVq1b9BwAkVQboFQv98gAAAABJRU5ErkJggg==) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/dreamweaver.css b/lib/ace/theme/dreamweaver.css
index ab845390..de6056fc 100644
--- a/lib/ace/theme/dreamweaver.css
+++ b/lib/ace/theme/dreamweaver.css
@@ -115,9 +115,6 @@
color: #00F;
}
-.ace-dreamweaver .ace_markup.ace_underline {
- text-decoration:underline;
-}
.ace-dreamweaver .ace_markup.ace_heading {
color: rgb(12, 7, 255);
diff --git a/lib/ace/theme/idle_fingers.css b/lib/ace/theme/idle_fingers.css
index ce7f926b..b83a700b 100644
--- a/lib/ace/theme/idle_fingers.css
+++ b/lib/ace/theme/idle_fingers.css
@@ -73,15 +73,10 @@
}
.ace-idle-fingers .ace_constant,
-.ace-idle-fingers .ace_constant.ace_other {
- color: #6C99BB
-}
-
-.ace-idle-fingers .ace_constant.ace_character {
- color: #6C99BB
-}
-
-.ace-idle-fingers .ace_constant.ace_character.ace_escape {
+.ace-idle-fingers .ace_constant.ace_character,
+.ace-idle-fingers .ace_constant.ace_character.ace_escape,
+.ace-idle-fingers .ace_constant.ace_other,
+.ace-idle-fingers .ace_support.ace_constant {
color: #6C99BB
}
@@ -90,10 +85,6 @@
background-color: #FF0000
}
-.ace-idle-fingers .ace_support.ace_constant {
- color: #6C99BB
-}
-
.ace-idle-fingers .ace_fold {
background-color: #CC7833;
border-color: #FFFFFF
diff --git a/lib/ace/theme/kr_theme.css b/lib/ace/theme/kr_theme.css
index 0a33b0cc..c4883af1 100644
--- a/lib/ace/theme/kr_theme.css
+++ b/lib/ace/theme/kr_theme.css
@@ -73,18 +73,12 @@
}
.ace-kr-theme .ace_constant,
+.ace-kr-theme .ace_constant.ace_character,
+.ace-kr-theme .ace_constant.ace_character.ace_escape,
.ace-kr-theme .ace_constant.ace_other {
color: rgba(210, 117, 24, 0.76)
}
-.ace-kr-theme .ace_constant.ace_character {
- color: rgba(210, 117, 24, 0.76)
-}
-
-.ace-kr-theme .ace_constant.ace_character.ace_escape {
- color: rgba(210, 117, 24, 0.76)
-}
-
.ace-kr-theme .ace_invalid {
color: #F8F8F8;
background-color: #A41300
diff --git a/lib/ace/theme/merbivore.css b/lib/ace/theme/merbivore.css
index d9229a08..7a4f0522 100644
--- a/lib/ace/theme/merbivore.css
+++ b/lib/ace/theme/merbivore.css
@@ -68,12 +68,18 @@
}
.ace-merbivore .ace_keyword,
-.ace-merbivore .ace_meta {
+.ace-merbivore .ace_meta,
+.ace-merbivore .ace_meta.ace_tag,
+.ace-merbivore .ace_storage,
+.ace-merbivore .ace_support.ace_function {
color: #FC6F09
}
.ace-merbivore .ace_constant,
-.ace-merbivore .ace_constant.ace_other {
+.ace-merbivore .ace_constant.ace_character,
+.ace-merbivore .ace_constant.ace_character.ace_escape,
+.ace-merbivore .ace_constant.ace_other,
+.ace-merbivore .ace_support.ace_type {
color: #1EDAFB
}
@@ -81,19 +87,13 @@
color: #519F50
}
-.ace-merbivore .ace_constant.ace_character {
- color: #1EDAFB
-}
-
-.ace-merbivore .ace_constant.ace_character.ace_escape {
- color: #1EDAFB
-}
-
.ace-merbivore .ace_constant.ace_language {
color: #FDC251
}
-.ace-merbivore .ace_constant.ace_library {
+.ace-merbivore .ace_constant.ace_library,
+.ace-merbivore .ace_string,
+.ace-merbivore .ace_support.ace_constant {
color: #8DFF0A
}
@@ -106,40 +106,16 @@
background-color: #990000
}
-.ace-merbivore .ace_support.ace_constant {
- color: #8DFF0A
-}
-
.ace-merbivore .ace_fold {
background-color: #FC6F09;
border-color: #E6E1DC
}
-.ace-merbivore .ace_support.ace_function {
- color: #FC6F09
-}
-
-.ace-merbivore .ace_support.ace_type {
- color: #1EDAFB
-}
-
-.ace-merbivore .ace_storage {
- color: #FC6F09
-}
-
-.ace-merbivore .ace_string {
- color: #8DFF0A
-}
-
.ace-merbivore .ace_comment {
font-style: italic;
color: #AD2EA4
}
-.ace-merbivore .ace_meta.ace_tag {
- color: #FC6F09
-}
-
.ace-merbivore .ace_entity.ace_other.ace_attribute-name {
color: #FFFF89
}
diff --git a/lib/ace/theme/merbivore_soft.css b/lib/ace/theme/merbivore_soft.css
index d011987d..4069e99a 100644
--- a/lib/ace/theme/merbivore_soft.css
+++ b/lib/ace/theme/merbivore_soft.css
@@ -68,12 +68,17 @@
}
.ace-merbivore-soft .ace_keyword,
-.ace-merbivore-soft .ace_meta {
+.ace-merbivore-soft .ace_meta,
+.ace-merbivore-soft .ace_meta.ace_tag,
+.ace-merbivore-soft .ace_storage {
color: #FC803A
}
.ace-merbivore-soft .ace_constant,
-.ace-merbivore-soft .ace_constant.ace_other {
+.ace-merbivore-soft .ace_constant.ace_character,
+.ace-merbivore-soft .ace_constant.ace_character.ace_escape,
+.ace-merbivore-soft .ace_constant.ace_other,
+.ace-merbivore-soft .ace_support.ace_type {
color: #68C1D8
}
@@ -81,19 +86,13 @@
color: #B3E5B4
}
-.ace-merbivore-soft .ace_constant.ace_character {
- color: #68C1D8
-}
-
-.ace-merbivore-soft .ace_constant.ace_character.ace_escape {
- color: #68C1D8
-}
-
.ace-merbivore-soft .ace_constant.ace_language {
color: #E1C582
}
-.ace-merbivore-soft .ace_constant.ace_library {
+.ace-merbivore-soft .ace_constant.ace_library,
+.ace-merbivore-soft .ace_string,
+.ace-merbivore-soft .ace_support.ace_constant {
color: #8EC65F
}
@@ -101,51 +100,23 @@
color: #7FC578
}
-.ace-merbivore-soft .ace_invalid {
- color: #FFFFFF;
- background-color: #FE3838
-}
-
+.ace-merbivore-soft .ace_invalid,
.ace-merbivore-soft .ace_invalid.ace_deprecated {
color: #FFFFFF;
background-color: #FE3838
}
-.ace-merbivore-soft .ace_support.ace_constant {
- color: #8EC65F
-}
-
.ace-merbivore-soft .ace_fold {
background-color: #FC803A;
border-color: #E6E1DC
}
-.ace-merbivore-soft .ace_support.ace_type {
- color: #68C1D8
-}
-
-.ace-merbivore-soft .ace_storage {
- color: #FC803A
-}
-
-.ace-merbivore-soft .ace_string {
- color: #8EC65F
-}
-
-.ace-merbivore-soft .ace_comment {
- font-style: italic;
- color: #AC4BB8
-}
-
+.ace-merbivore-soft .ace_comment,
.ace-merbivore-soft .ace_meta {
font-style: italic;
color: #AC4BB8
}
-.ace-merbivore-soft .ace_meta.ace_tag {
- color: #FC803A
-}
-
.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {
color: #EAF1A3
}
diff --git a/lib/ace/theme/mono_industrial.css b/lib/ace/theme/mono_industrial.css
index 91f8480b..065382a9 100644
--- a/lib/ace/theme/mono_industrial.css
+++ b/lib/ace/theme/mono_industrial.css
@@ -72,25 +72,18 @@
color: #A39E64
}
-.ace-mono-industrial .ace_keyword.ace_operator {
- color: #A8B3AB
-}
-
.ace-mono-industrial .ace_constant,
+.ace-mono-industrial .ace_constant.ace_character,
+.ace-mono-industrial .ace_constant.ace_character.ace_escape,
+.ace-mono-industrial .ace_constant.ace_numeric,
.ace-mono-industrial .ace_constant.ace_other {
color: #E98800
}
-.ace-mono-industrial .ace_constant.ace_character {
- color: #E98800
-}
-
-.ace-mono-industrial .ace_constant.ace_character.ace_escape {
- color: #E98800
-}
-
-.ace-mono-industrial .ace_constant.ace_numeric {
- color: #E98800
+.ace-mono-industrial .ace_entity.ace_name.ace_function,
+.ace-mono-industrial .ace_keyword.ace_operator,
+.ace-mono-industrial .ace_variable {
+ color: #A8B3AB
}
.ace-mono-industrial .ace_invalid {
@@ -111,22 +104,17 @@
color: #588E60
}
+.ace-mono-industrial .ace_entity.ace_name,
+.ace-mono-industrial .ace_support.ace_class,
.ace-mono-industrial .ace_support.ace_type {
color: #5778B6
}
-.ace-mono-industrial .ace_support.ace_class {
- color: #5778B6
-}
-
.ace-mono-industrial .ace_storage {
color: #C23B00
}
-.ace-mono-industrial .ace_variable {
- color: #A8B3AB
-}
-
+.ace-mono-industrial .ace_variable.ace_language,
.ace-mono-industrial .ace_variable.ace_parameter {
color: #648BD2
}
@@ -136,22 +124,10 @@
background-color: #151C19
}
-.ace-mono-industrial .ace_variable.ace_language {
- color: #648BD2
-}
-
.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {
color: #909993
}
-.ace-mono-industrial .ace_entity.ace_name {
- color: #5778B6
-}
-
-.ace-mono-industrial .ace_entity.ace_name.ace_function {
- color: #A8B3AB
-}
-
.ace-mono-industrial .ace_markup.ace_underline {
text-decoration: underline
}
diff --git a/lib/ace/theme/monokai.css b/lib/ace/theme/monokai.css
index d88e68e4..a0b21851 100644
--- a/lib/ace/theme/monokai.css
+++ b/lib/ace/theme/monokai.css
@@ -68,22 +68,14 @@
}
.ace-monokai .ace_keyword,
-.ace-monokai .ace_meta {
+.ace-monokai .ace_meta,
+.ace-monokai .ace_storage {
color: #F92672
}
-.ace-monokai .ace_constant.ace_character {
- color: #AE81FF
-}
-
-.ace-monokai .ace_constant.ace_language {
- color: #AE81FF
-}
-
-.ace-monokai .ace_constant.ace_numeric {
- color: #AE81FF
-}
-
+.ace-monokai .ace_constant.ace_character,
+.ace-monokai .ace_constant.ace_language,
+.ace-monokai .ace_constant.ace_numeric,
.ace-monokai .ace_constant.ace_other {
color: #AE81FF
}
@@ -98,7 +90,8 @@
background-color: #AE81FF
}
-.ace-monokai .ace_support.ace_constant {
+.ace-monokai .ace_support.ace_constant,
+.ace-monokai .ace_support.ace_function {
color: #66D9EF
}
@@ -107,30 +100,15 @@
border-color: #F8F8F2
}
-.ace-monokai .ace_support.ace_function {
- color: #66D9EF
-}
-
-.ace-monokai .ace_support.ace_type {
- font-style: italic;
- color: #66D9EF
-}
-
-.ace-monokai .ace_support.ace_class {
- font-style: italic;
- color: #66D9EF
-}
-
-.ace-monokai .ace_storage {
- color: #F92672
-}
-
.ace-monokai .ace_storage.ace_type,
+.ace-monokai .ace_support.ace_class,
.ace-monokai .ace_support.ace_type {
font-style: italic;
color: #66D9EF
}
+.ace-monokai .ace_entity.ace_name.ace_function,
+.ace-monokai .ace_entity.ace_other.ace_attribute-name,
.ace-monokai .ace_variable {
color: #A6E22E
}
@@ -148,14 +126,6 @@
color: #75715E
}
-.ace-monokai .ace_entity.ace_other.ace_attribute-name {
- color: #A6E22E
-}
-
-.ace-monokai .ace_entity.ace_name.ace_function {
- color: #A6E22E
-}
-
.ace-monokai .ace_markup.ace_underline {
text-decoration: underline
}
diff --git a/lib/ace/theme/pastel_on_dark.css b/lib/ace/theme/pastel_on_dark.css
index 3383af29..2d59a28e 100644
--- a/lib/ace/theme/pastel_on_dark.css
+++ b/lib/ace/theme/pastel_on_dark.css
@@ -72,27 +72,21 @@
color: #757aD8
}
-.ace-pastel-on-dark .ace_keyword.ace_operator {
- color: #797878
-}
-
.ace-pastel-on-dark .ace_constant,
+.ace-pastel-on-dark .ace_constant.ace_character,
+.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,
.ace-pastel-on-dark .ace_constant.ace_other {
color: #4FB7C5
}
+.ace-pastel-on-dark .ace_keyword.ace_operator {
+ color: #797878
+}
+
.ace-pastel-on-dark .ace_constant.ace_character {
color: #AFA472
}
-.ace-pastel-on-dark .ace_constant.ace_character {
- color: #4FB7C5
-}
-
-.ace-pastel-on-dark .ace_constant.ace_character.ace_escape {
- color: #4FB7C5
-}
-
.ace-pastel-on-dark .ace_constant.ace_language {
color: #DE8E30
}
@@ -101,11 +95,7 @@
color: #CCCCCC
}
-.ace-pastel-on-dark .ace_invalid {
- color: #F8F8F8;
- background-color: rgba(86, 45, 86, 0.75)
-}
-
+.ace-pastel-on-dark .ace_invalid,
.ace-pastel-on-dark .ace_invalid.ace_illegal {
color: #F8F8F8;
background-color: rgba(86, 45, 86, 0.75)
diff --git a/lib/ace/theme/solarized_dark.css b/lib/ace/theme/solarized_dark.css
index 0dd836e6..6de92823 100644
--- a/lib/ace/theme/solarized_dark.css
+++ b/lib/ace/theme/solarized_dark.css
@@ -20,6 +20,8 @@
background-color: #002B36
}
+.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,
+.ace-solarized-dark .ace_storage,
.ace-solarized-dark .ace_text-layer {
color: #93A1A1
}
@@ -33,6 +35,7 @@
border-bottom: 1px solid #D30102
}
+.ace-solarized-dark .ace_marker-layer .ace_active_line,
.ace-solarized-dark .ace_marker-layer .ace_selection {
background: #073642
}
@@ -51,10 +54,6 @@
border: 1px solid rgba(147, 161, 161, 0.50)
}
-.ace-solarized-dark .ace_marker-layer .ace_active_line {
- background: #073642
-}
-
.ace-solarized-dark .ace_gutter_active_line {
background-color: #0d3440
}
@@ -68,11 +67,14 @@
}
.ace-solarized-dark .ace_keyword,
-.ace-solarized-dark .ace_meta {
+.ace-solarized-dark .ace_meta,
+.ace-solarized-dark .ace_support.ace_class,
+.ace-solarized-dark .ace_support.ace_type {
color: #859900
}
-.ace-solarized-dark .ace_constant.ace_character {
+.ace-solarized-dark .ace_constant.ace_character,
+.ace-solarized-dark .ace_constant.ace_other {
color: #CB4B16
}
@@ -84,32 +86,15 @@
color: #D33682
}
-.ace-solarized-dark .ace_constant.ace_other {
- color: #CB4B16
-}
-
.ace-solarized-dark .ace_fold {
background-color: #268BD2;
border-color: #93A1A1
}
-.ace-solarized-dark .ace_support.ace_function {
- color: #268BD2
-}
-
-.ace-solarized-dark .ace_support.ace_type {
- color: #859900
-}
-
-.ace-solarized-dark .ace_support.ace_class {
- color: #859900
-}
-
-.ace-solarized-dark .ace_storage {
- color: #93A1A1
-}
-
-.ace-solarized-dark .ace_variable {
+.ace-solarized-dark .ace_entity.ace_name.ace_function,
+.ace-solarized-dark .ace_support.ace_function,
+.ace-solarized-dark .ace_variable,
+.ace-solarized-dark .ace_variable.ace_language {
color: #268BD2
}
@@ -126,18 +111,6 @@
color: #657B83
}
-.ace-solarized-dark .ace_variable.ace_language {
- color: #268BD2
-}
-
-.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name {
- color: #93A1A1
-}
-
-.ace-solarized-dark .ace_entity.ace_name.ace_function {
- color: #268BD2
-}
-
.ace-solarized-dark .ace_markup.ace_underline {
text-decoration: underline
}
diff --git a/lib/ace/theme/solarized_light.css b/lib/ace/theme/solarized_light.css
index 567f64b8..4a3e0c25 100644
--- a/lib/ace/theme/solarized_light.css
+++ b/lib/ace/theme/solarized_light.css
@@ -68,11 +68,14 @@
}
.ace-solarized-light .ace_keyword,
-.ace-solarized-light .ace_meta {
+.ace-solarized-light .ace_meta,
+.ace-solarized-light .ace_support.ace_class,
+.ace-solarized-light .ace_support.ace_type {
color: #859900
}
-.ace-solarized-light .ace_constant.ace_character {
+.ace-solarized-light .ace_constant.ace_character,
+.ace-solarized-light .ace_constant.ace_other {
color: #CB4B16
}
@@ -84,35 +87,22 @@
color: #D33682
}
-.ace-solarized-light .ace_constant.ace_other {
- color: #CB4B16
-}
-
.ace-solarized-light .ace_fold {
background-color: #268BD2;
border-color: #586E75
}
-.ace-solarized-light .ace_support.ace_function {
+.ace-solarized-light .ace_entity.ace_name.ace_function,
+.ace-solarized-light .ace_support.ace_function,
+.ace-solarized-light .ace_variable,
+.ace-solarized-light .ace_variable.ace_language {
color: #268BD2
}
-.ace-solarized-light .ace_support.ace_type {
- color: #859900
-}
-
-.ace-solarized-light .ace_support.ace_class {
- color: #859900
-}
-
.ace-solarized-light .ace_storage {
color: #073642
}
-.ace-solarized-light .ace_variable {
- color: #268BD2
-}
-
.ace-solarized-light .ace_string {
color: #2AA198
}
@@ -121,22 +111,11 @@
color: #D30102
}
-.ace-solarized-light .ace_comment {
- color: #93A1A1
-}
-
-.ace-solarized-light .ace_variable.ace_language {
- color: #268BD2
-}
-
+.ace-solarized-light .ace_comment,
.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {
color: #93A1A1
}
-.ace-solarized-light .ace_entity.ace_name.ace_function {
- color: #268BD2
-}
-
.ace-solarized-light .ace_markup.ace_underline {
text-decoration: underline
}
diff --git a/lib/ace/theme/textmate.css b/lib/ace/theme/textmate.css
index 80b9ae1d..c328b3aa 100644
--- a/lib/ace/theme/textmate.css
+++ b/lib/ace/theme/textmate.css
@@ -112,9 +112,6 @@
color: #0000A2;
}
-.ace-tm .ace_markup.ace_underline {
- text-decoration:underline;
-}
.ace-tm .ace_markup.ace_heading {
color: rgb(12, 7, 255);
diff --git a/lib/ace/theme/tomorrow.css b/lib/ace/theme/tomorrow.css
index fa30fe5f..f59686b1 100644
--- a/lib/ace/theme/tomorrow.css
+++ b/lib/ace/theme/tomorrow.css
@@ -68,7 +68,10 @@
}
.ace-tomorrow .ace_keyword,
-.ace-tomorrow .ace_meta {
+.ace-tomorrow .ace_meta,
+.ace-tomorrow .ace_storage,
+.ace-tomorrow .ace_storage.ace_type,
+.ace-tomorrow .ace_support.ace_type {
color: #8959A8
}
@@ -76,15 +79,11 @@
color: #3E999F
}
-.ace-tomorrow .ace_constant.ace_character {
- color: #F5871F
-}
-
-.ace-tomorrow .ace_constant.ace_language {
- color: #F5871F
-}
-
-.ace-tomorrow .ace_constant.ace_numeric {
+.ace-tomorrow .ace_constant.ace_character,
+.ace-tomorrow .ace_constant.ace_language,
+.ace-tomorrow .ace_constant.ace_numeric,
+.ace-tomorrow .ace_support.ace_constant,
+.ace-tomorrow .ace_variable.ace_parameter {
color: #F5871F
}
@@ -102,49 +101,31 @@
background-color: #8959A8
}
-.ace-tomorrow .ace_support.ace_constant {
- color: #F5871F
-}
-
.ace-tomorrow .ace_fold {
background-color: #4271AE;
border-color: #4D4D4C
}
-.ace-tomorrow .ace_support.ace_function {
- color: #4271AE
-}
-
-.ace-tomorrow .ace_support.ace_type {
- color: #C99E00
-}
-
-.ace-tomorrow .ace_support.ace_class {
- color: #C99E00
-}
-
-.ace-tomorrow .ace_storage {
- color: #8959A8
-}
-
-.ace-tomorrow .ace_storage.ace_type,
-.ace-tomorrow .ace_support.ace_type {
- color: #8959A8
-}
-
+.ace-tomorrow .ace_entity.ace_name.ace_function,
+.ace-tomorrow .ace_support.ace_function,
.ace-tomorrow .ace_variable {
color: #4271AE
}
-.ace-tomorrow .ace_variable.ace_parameter {
- color: #F5871F
+.ace-tomorrow .ace_support.ace_class,
+.ace-tomorrow .ace_support.ace_type {
+ color: #C99E00
}
+.ace-tomorrow .ace_markup.ace_heading,
.ace-tomorrow .ace_string {
color: #718C00
}
-.ace-tomorrow .ace_string.ace_regexp {
+.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,
+.ace-tomorrow .ace_meta.ace_tag,
+.ace-tomorrow .ace_string.ace_regexp,
+.ace-tomorrow .ace_variable {
color: #C82829
}
@@ -152,30 +133,10 @@
color: #8E908C
}
-.ace-tomorrow .ace_variable {
- color: #C82829
-}
-
-.ace-tomorrow .ace_meta.ace_tag {
- color: #C82829
-}
-
-.ace-tomorrow .ace_entity.ace_other.ace_attribute-name {
- color: #C82829
-}
-
-.ace-tomorrow .ace_entity.ace_name.ace_function {
- color: #4271AE
-}
-
.ace-tomorrow .ace_markup.ace_underline {
text-decoration: underline
}
-.ace-tomorrow .ace_markup.ace_heading {
- color: #718C00
-}
-
.ace-tomorrow .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night.css b/lib/ace/theme/tomorrow_night.css
index 5ccaf476..3f7c8661 100644
--- a/lib/ace/theme/tomorrow_night.css
+++ b/lib/ace/theme/tomorrow_night.css
@@ -68,7 +68,10 @@
}
.ace-tomorrow-night .ace_keyword,
-.ace-tomorrow-night .ace_meta {
+.ace-tomorrow-night .ace_meta,
+.ace-tomorrow-night .ace_storage,
+.ace-tomorrow-night .ace_storage.ace_type,
+.ace-tomorrow-night .ace_support.ace_type {
color: #B294BB
}
@@ -76,15 +79,11 @@
color: #8ABEB7
}
-.ace-tomorrow-night .ace_constant.ace_character {
- color: #DE935F
-}
-
-.ace-tomorrow-night .ace_constant.ace_language {
- color: #DE935F
-}
-
-.ace-tomorrow-night .ace_constant.ace_numeric {
+.ace-tomorrow-night .ace_constant.ace_character,
+.ace-tomorrow-night .ace_constant.ace_language,
+.ace-tomorrow-night .ace_constant.ace_numeric,
+.ace-tomorrow-night .ace_support.ace_constant,
+.ace-tomorrow-night .ace_variable.ace_parameter {
color: #DE935F
}
@@ -102,49 +101,31 @@
background-color: #B798BF
}
-.ace-tomorrow-night .ace_support.ace_constant {
- color: #DE935F
-}
-
.ace-tomorrow-night .ace_fold {
background-color: #81A2BE;
border-color: #C5C8C6
}
-.ace-tomorrow-night .ace_support.ace_function {
- color: #81A2BE
-}
-
-.ace-tomorrow-night .ace_support.ace_type {
- color: #F0C674
-}
-
-.ace-tomorrow-night .ace_support.ace_class {
- color: #F0C674
-}
-
-.ace-tomorrow-night .ace_storage {
- color: #B294BB
-}
-
-.ace-tomorrow-night .ace_storage.ace_type,
-.ace-tomorrow-night .ace_support.ace_type {
- color: #B294BB
-}
-
+.ace-tomorrow-night .ace_entity.ace_name.ace_function,
+.ace-tomorrow-night .ace_support.ace_function,
.ace-tomorrow-night .ace_variable {
color: #81A2BE
}
-.ace-tomorrow-night .ace_variable.ace_parameter {
- color: #DE935F
+.ace-tomorrow-night .ace_support.ace_class,
+.ace-tomorrow-night .ace_support.ace_type {
+ color: #F0C674
}
+.ace-tomorrow-night .ace_markup.ace_heading,
.ace-tomorrow-night .ace_string {
color: #B5BD68
}
-.ace-tomorrow-night .ace_string.ace_regexp {
+.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,
+.ace-tomorrow-night .ace_meta.ace_tag,
+.ace-tomorrow-night .ace_string.ace_regexp,
+.ace-tomorrow-night .ace_variable {
color: #CC6666
}
@@ -152,30 +133,10 @@
color: #969896
}
-.ace-tomorrow-night .ace_variable {
- color: #CC6666
-}
-
-.ace-tomorrow-night .ace_meta.ace_tag {
- color: #CC6666
-}
-
-.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name {
- color: #CC6666
-}
-
-.ace-tomorrow-night .ace_entity.ace_name.ace_function {
- color: #81A2BE
-}
-
.ace-tomorrow-night .ace_markup.ace_underline {
text-decoration: underline
}
-.ace-tomorrow-night .ace_markup.ace_heading {
- color: #B5BD68
-}
-
.ace-tomorrow-night .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlVf8z7Bq1ar/AA/hBFp7egmpAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night_blue.css b/lib/ace/theme/tomorrow_night_blue.css
index 45d7ccb1..07849e33 100644
--- a/lib/ace/theme/tomorrow_night_blue.css
+++ b/lib/ace/theme/tomorrow_night_blue.css
@@ -20,6 +20,7 @@
background-color: #002451
}
+.ace-tomorrow-night-blue .ace_constant.ace_other,
.ace-tomorrow-night-blue .ace_text-layer {
color: #FFFFFF
}
@@ -68,7 +69,10 @@
}
.ace-tomorrow-night-blue .ace_keyword,
-.ace-tomorrow-night-blue .ace_meta {
+.ace-tomorrow-night-blue .ace_meta,
+.ace-tomorrow-night-blue .ace_storage,
+.ace-tomorrow-night-blue .ace_storage.ace_type,
+.ace-tomorrow-night-blue .ace_support.ace_type {
color: #EBBBFF
}
@@ -76,22 +80,14 @@
color: #99FFFF
}
-.ace-tomorrow-night-blue .ace_constant.ace_character {
+.ace-tomorrow-night-blue .ace_constant.ace_character,
+.ace-tomorrow-night-blue .ace_constant.ace_language,
+.ace-tomorrow-night-blue .ace_constant.ace_numeric,
+.ace-tomorrow-night-blue .ace_support.ace_constant,
+.ace-tomorrow-night-blue .ace_variable.ace_parameter {
color: #FFC58F
}
-.ace-tomorrow-night-blue .ace_constant.ace_language {
- color: #FFC58F
-}
-
-.ace-tomorrow-night-blue .ace_constant.ace_numeric {
- color: #FFC58F
-}
-
-.ace-tomorrow-night-blue .ace_constant.ace_other {
- color: #FFFFFF
-}
-
.ace-tomorrow-night-blue .ace_invalid {
color: #FFFFFF;
background-color: #F99DA5
@@ -102,49 +98,31 @@
background-color: #EBBBFF
}
-.ace-tomorrow-night-blue .ace_support.ace_constant {
- color: #FFC58F
-}
-
.ace-tomorrow-night-blue .ace_fold {
background-color: #BBDAFF;
border-color: #FFFFFF
}
-.ace-tomorrow-night-blue .ace_support.ace_function {
- color: #BBDAFF
-}
-
-.ace-tomorrow-night-blue .ace_support.ace_type {
- color: #FFEEAD
-}
-
-.ace-tomorrow-night-blue .ace_support.ace_class {
- color: #FFEEAD
-}
-
-.ace-tomorrow-night-blue .ace_storage {
- color: #EBBBFF
-}
-
-.ace-tomorrow-night-blue .ace_storage.ace_type,
-.ace-tomorrow-night-blue .ace_support.ace_type {
- color: #EBBBFF
-}
-
+.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,
+.ace-tomorrow-night-blue .ace_support.ace_function,
.ace-tomorrow-night-blue .ace_variable {
color: #BBDAFF
}
-.ace-tomorrow-night-blue .ace_variable.ace_parameter {
- color: #FFC58F
+.ace-tomorrow-night-blue .ace_support.ace_class,
+.ace-tomorrow-night-blue .ace_support.ace_type {
+ color: #FFEEAD
}
+.ace-tomorrow-night-blue .ace_markup.ace_heading,
.ace-tomorrow-night-blue .ace_string {
color: #D1F1A9
}
-.ace-tomorrow-night-blue .ace_string.ace_regexp {
+.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,
+.ace-tomorrow-night-blue .ace_meta.ace_tag,
+.ace-tomorrow-night-blue .ace_string.ace_regexp,
+.ace-tomorrow-night-blue .ace_variable {
color: #FF9DA4
}
@@ -152,30 +130,10 @@
color: #7285B7
}
-.ace-tomorrow-night-blue .ace_variable {
- color: #FF9DA4
-}
-
-.ace-tomorrow-night-blue .ace_meta.ace_tag {
- color: #FF9DA4
-}
-
-.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name {
- color: #FF9DA4
-}
-
-.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function {
- color: #BBDAFF
-}
-
.ace-tomorrow-night-blue .ace_markup.ace_underline {
text-decoration: underline
}
-.ace-tomorrow-night-blue .ace_markup.ace_heading {
- color: #D1F1A9
-}
-
.ace-tomorrow-night-blue .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUAn8z7Bq1ar/ABBUBHJ4/r3JAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night_bright.css b/lib/ace/theme/tomorrow_night_bright.css
index af08f92d..4f74c2b9 100644
--- a/lib/ace/theme/tomorrow_night_bright.css
+++ b/lib/ace/theme/tomorrow_night_bright.css
@@ -68,7 +68,10 @@
}
.ace-tomorrow-night-bright .ace_keyword,
-.ace-tomorrow-night-bright .ace_meta {
+.ace-tomorrow-night-bright .ace_meta,
+.ace-tomorrow-night-bright .ace_storage,
+.ace-tomorrow-night-bright .ace_storage.ace_type,
+.ace-tomorrow-night-bright .ace_support.ace_type {
color: #C397D8
}
@@ -76,15 +79,11 @@
color: #70C0B1
}
-.ace-tomorrow-night-bright .ace_constant.ace_character {
- color: #E78C45
-}
-
-.ace-tomorrow-night-bright .ace_constant.ace_language {
- color: #E78C45
-}
-
-.ace-tomorrow-night-bright .ace_constant.ace_numeric {
+.ace-tomorrow-night-bright .ace_constant.ace_character,
+.ace-tomorrow-night-bright .ace_constant.ace_language,
+.ace-tomorrow-night-bright .ace_constant.ace_numeric,
+.ace-tomorrow-night-bright .ace_support.ace_constant,
+.ace-tomorrow-night-bright .ace_variable.ace_parameter {
color: #E78C45
}
@@ -102,49 +101,31 @@
background-color: #B798BF
}
-.ace-tomorrow-night-bright .ace_support.ace_constant {
- color: #E78C45
-}
-
.ace-tomorrow-night-bright .ace_fold {
background-color: #7AA6DA;
border-color: #DEDEDE
}
-.ace-tomorrow-night-bright .ace_support.ace_function {
- color: #7AA6DA
-}
-
-.ace-tomorrow-night-bright .ace_support.ace_type {
- color: #E7C547
-}
-
-.ace-tomorrow-night-bright .ace_support.ace_class {
- color: #E7C547
-}
-
-.ace-tomorrow-night-bright .ace_storage {
- color: #C397D8
-}
-
-.ace-tomorrow-night-bright .ace_storage.ace_type,
-.ace-tomorrow-night-bright .ace_support.ace_type {
- color: #C397D8
-}
-
+.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,
+.ace-tomorrow-night-bright .ace_support.ace_function,
.ace-tomorrow-night-bright .ace_variable {
color: #7AA6DA
}
-.ace-tomorrow-night-bright .ace_variable.ace_parameter {
- color: #E78C45
+.ace-tomorrow-night-bright .ace_support.ace_class,
+.ace-tomorrow-night-bright .ace_support.ace_type {
+ color: #E7C547
}
+.ace-tomorrow-night-bright .ace_markup.ace_heading,
.ace-tomorrow-night-bright .ace_string {
color: #B9CA4A
}
-.ace-tomorrow-night-bright .ace_string.ace_regexp {
+.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,
+.ace-tomorrow-night-bright .ace_meta.ace_tag,
+.ace-tomorrow-night-bright .ace_string.ace_regexp,
+.ace-tomorrow-night-bright .ace_variable {
color: #D54E53
}
@@ -152,30 +133,10 @@
color: #969896
}
-.ace-tomorrow-night-bright .ace_variable {
- color: #D54E53
-}
-
-.ace-tomorrow-night-bright .ace_meta.ace_tag {
- color: #D54E53
-}
-
-.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name {
- color: #D54E53
-}
-
-.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function {
- color: #7AA6DA
-}
-
.ace-tomorrow-night-bright .ace_markup.ace_underline {
text-decoration: underline
}
-.ace-tomorrow-night-bright .ace_markup.ace_heading {
- color: #B9CA4A
-}
-
.ace-tomorrow-night-bright .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGD4z7Bq1ar/AAz9A/2naJQKAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/tomorrow_night_eighties.css b/lib/ace/theme/tomorrow_night_eighties.css
index 64223ab0..469f3186 100644
--- a/lib/ace/theme/tomorrow_night_eighties.css
+++ b/lib/ace/theme/tomorrow_night_eighties.css
@@ -20,6 +20,7 @@
background-color: #2D2D2D
}
+.ace-tomorrow-night-eighties .ace_constant.ace_other,
.ace-tomorrow-night-eighties .ace_text-layer {
color: #CCCCCC
}
@@ -68,7 +69,10 @@
}
.ace-tomorrow-night-eighties .ace_keyword,
-.ace-tomorrow-night-eighties .ace_meta {
+.ace-tomorrow-night-eighties .ace_meta,
+.ace-tomorrow-night-eighties .ace_storage,
+.ace-tomorrow-night-eighties .ace_storage.ace_type,
+.ace-tomorrow-night-eighties .ace_support.ace_type {
color: #CC99CC
}
@@ -76,22 +80,14 @@
color: #66CCCC
}
-.ace-tomorrow-night-eighties .ace_constant.ace_character {
+.ace-tomorrow-night-eighties .ace_constant.ace_character,
+.ace-tomorrow-night-eighties .ace_constant.ace_language,
+.ace-tomorrow-night-eighties .ace_constant.ace_numeric,
+.ace-tomorrow-night-eighties .ace_support.ace_constant,
+.ace-tomorrow-night-eighties .ace_variable.ace_parameter {
color: #F99157
}
-.ace-tomorrow-night-eighties .ace_constant.ace_language {
- color: #F99157
-}
-
-.ace-tomorrow-night-eighties .ace_constant.ace_numeric {
- color: #F99157
-}
-
-.ace-tomorrow-night-eighties .ace_constant.ace_other {
- color: #CCCCCC
-}
-
.ace-tomorrow-night-eighties .ace_invalid {
color: #CDCDCD;
background-color: #F2777A
@@ -102,44 +98,23 @@
background-color: #CC99CC
}
-.ace-tomorrow-night-eighties .ace_support.ace_constant {
- color: #F99157
-}
-
.ace-tomorrow-night-eighties .ace_fold {
background-color: #6699CC;
border-color: #CCCCCC
}
-.ace-tomorrow-night-eighties .ace_support.ace_function {
- color: #6699CC
-}
-
-.ace-tomorrow-night-eighties .ace_support.ace_type {
- color: #FFCC66
-}
-
-.ace-tomorrow-night-eighties .ace_support.ace_class {
- color: #FFCC66
-}
-
-.ace-tomorrow-night-eighties .ace_storage {
- color: #CC99CC
-}
-
-.ace-tomorrow-night-eighties .ace_storage.ace_type,
-.ace-tomorrow-night-eighties .ace_support.ace_type {
- color: #CC99CC
-}
-
+.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,
+.ace-tomorrow-night-eighties .ace_support.ace_function,
.ace-tomorrow-night-eighties .ace_variable {
color: #6699CC
}
-.ace-tomorrow-night-eighties .ace_variable.ace_parameter {
- color: #F99157
+.ace-tomorrow-night-eighties .ace_support.ace_class,
+.ace-tomorrow-night-eighties .ace_support.ace_type {
+ color: #FFCC66
}
+.ace-tomorrow-night-eighties .ace_markup.ace_heading,
.ace-tomorrow-night-eighties .ace_string {
color: #99CC99
}
@@ -148,30 +123,16 @@
color: #999999
}
+.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,
+.ace-tomorrow-night-eighties .ace_meta.ace_tag,
.ace-tomorrow-night-eighties .ace_variable {
color: #F2777A
}
-.ace-tomorrow-night-eighties .ace_meta.ace_tag {
- color: #F2777A
-}
-
-.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name {
- color: #F2777A
-}
-
-.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function {
- color: #6699CC
-}
-
.ace-tomorrow-night-eighties .ace_markup.ace_underline {
text-decoration: underline
}
-.ace-tomorrow-night-eighties .ace_markup.ace_heading {
- color: #99CC99
-}
-
.ace-tomorrow-night-eighties .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ1dX9z7Bq1ar/ABE1BITwhhuFAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/twilight.css b/lib/ace/theme/twilight.css
index b19eb085..0d943563 100644
--- a/lib/ace/theme/twilight.css
+++ b/lib/ace/theme/twilight.css
@@ -73,15 +73,11 @@
}
.ace-twilight .ace_constant,
-.ace-twilight .ace_constant.ace_other {
- color: #CF6A4C
-}
-
-.ace-twilight .ace_constant.ace_character {
- color: #CF6A4C
-}
-
-.ace-twilight .ace_constant.ace_character.ace_escape {
+.ace-twilight .ace_constant.ace_character,
+.ace-twilight .ace_constant.ace_character.ace_escape,
+.ace-twilight .ace_constant.ace_other,
+.ace-twilight .ace_markup.ace_heading,
+.ace-twilight .ace_support.ace_constant {
color: #CF6A4C
}
@@ -100,10 +96,6 @@
color: #9B859D
}
-.ace-twilight .ace_support.ace_constant {
- color: #CF6A4C
-}
-
.ace-twilight .ace_fold {
background-color: #AC885B;
border-color: #F8F8F8
@@ -113,10 +105,13 @@
color: #DAD085
}
+.ace-twilight .ace_markup.ace_list,
.ace-twilight .ace_storage {
color: #F9EE98
}
+.ace-twilight .ace_entity.ace_name.ace_function,
+.ace-twilight .ace_meta.ace_tag,
.ace-twilight .ace_variable {
color: #AC885B
}
@@ -142,26 +137,10 @@
color: #494949
}
-.ace-twilight .ace_meta.ace_tag {
- color: #AC885B
-}
-
-.ace-twilight .ace_entity.ace_name.ace_function {
- color: #AC885B
-}
-
.ace-twilight .ace_markup.ace_underline {
text-decoration: underline
}
-.ace-twilight .ace_markup.ace_heading {
- color: #CF6A4C
-}
-
-.ace-twilight .ace_markup.ace_list {
- color: #F9EE98
-}
-
.ace-twilight .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERH5zzBz5sz/AA5EBAYqeZXWAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/lib/ace/theme/vibrant_ink.css b/lib/ace/theme/vibrant_ink.css
index fcfb7889..10481153 100644
--- a/lib/ace/theme/vibrant_ink.css
+++ b/lib/ace/theme/vibrant_ink.css
@@ -73,27 +73,17 @@
}
.ace-vibrant-ink .ace_constant,
+.ace-vibrant-ink .ace_constant.ace_character,
+.ace-vibrant-ink .ace_constant.ace_character.ace_escape,
.ace-vibrant-ink .ace_constant.ace_other {
color: #339999
}
-.ace-vibrant-ink .ace_constant.ace_character {
- color: #339999
-}
-
-.ace-vibrant-ink .ace_constant.ace_character.ace_escape {
- color: #339999
-}
-
.ace-vibrant-ink .ace_constant.ace_numeric {
color: #99CC99
}
-.ace-vibrant-ink .ace_invalid {
- color: #CCFF33;
- background-color: #000000
-}
-
+.ace-vibrant-ink .ace_invalid,
.ace-vibrant-ink .ace_invalid.ace_deprecated {
color: #CCFF33;
background-color: #000000
@@ -104,10 +94,8 @@
border-color: #FFFFFF
}
-.ace-vibrant-ink .ace_support.ace_function {
- color: #FFCC00
-}
-
+.ace-vibrant-ink .ace_entity.ace_name.ace_function,
+.ace-vibrant-ink .ace_support.ace_function,
.ace-vibrant-ink .ace_variable {
color: #FFCC00
}
@@ -133,14 +121,6 @@
color: #99CC99
}
-.ace-vibrant-ink .ace_entity.ace_name.ace_function {
- color: #FFCC00
-}
-
-.ace-vibrant-ink .ace_markup.ace_underline {
- text-decoration: underline
-}
-
.ace-vibrant-ink .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5+f/z7Bq1ar/AA5lBCqoLxsgAAAAAElFTkSuQmCC) right repeat-y
}
\ No newline at end of file
diff --git a/tool/Theme.tmpl.css b/tool/Theme.tmpl.css
index 6bb17908..0610485f 100644
--- a/tool/Theme.tmpl.css
+++ b/tool/Theme.tmpl.css
@@ -65,227 +65,12 @@
%selected_word_highlight%
}
-.%cssClass% .ace_invisible {
- %invisible%
-}
-
-.%cssClass% .ace_keyword, .%cssClass% .ace_meta {
- %keyword%
-}
-
-.%cssClass% .ace_keyword.ace_operator {
- %keyword.operator%
-}
-
-.%cssClass% .ace_keyword.ace_other.ace_unit {
- %keyword.other.unit%
-}
-
-.%cssClass% .ace_constant, .%cssClass% .ace_constant.ace_other {
- %constant%
-}
-
-.%cssClass% .ace_constant.ace_character {
- %constant.character%
-}
-
-.%cssClass% .ace_constant.ace_character.ace_escape {
- %constant.character.escape%
-}
-
-.%cssClass% .ace_constant.ace_character.ace_entity {
- %constant.character.entity%
-}
-
-.%cssClass% .ace_constant.ace_language {
- %constant.language%
-}
-
-.%cssClass% .ace_constant.ace_library {
- %constant.library%
-}
-
-.%cssClass% .ace_constant.ace_numeric {
- %constant.numeric%
-}
-
-.%cssClass% .ace_constant.ace_other {
- %constant.other%
-}
-
-.%cssClass% .ace_constant.ace_other.ace_color {
- %constant.other.color%
-}
-
-.%cssClass% .ace_invalid {
- %invalid%
-}
-
-.%cssClass% .ace_invalid.ace_illegal {
- %invalid.illegal%
-}
-
-.%cssClass% .ace_invalid.ace_deprecated {
- %invalid.deprecated%
-}
-
-.%cssClass% .ace_support {
- %support%
-}
-
-.%cssClass% .ace_support.ace_constant {
- %support.constant%
-}
-
-.%cssClass% support.constant.property-value {
- %support.constant.property-value%
-}
-
.%cssClass% .ace_fold {
background-color: %fold%;
border-color: %foreground%;
}
-.%cssClass% .ace_support.ace_function {
- %support.function%
-}
-.%cssClass% .ace_support.ace_type {
- %support.type%
-}
-.%cssClass% .ace_support.ace_class {
- %support.class%
-}
-.%cssClass% .ace_support.ace_other {
- %support.other%
-}
-.%cssClass% .ace_storage {
- %storage%
-}
-
-.%cssClass% .ace_storage.ace_type, .%cssClass% .ace_support.ace_type{
- %storage.type%
-}
-
-.%cssClass% .ace_variable {
- %entity.name.function%
-}
-
-.%cssClass% .ace_variable.ace_parameter {
- %variable.parameter%
-}
-
-.%cssClass% .ace_function.ace_buildin {
- %function.buildin%
-}
-
-.%cssClass% .ace_string {
- %string%
-}
-
-.%cssClass% .ace_string.ace_regexp {
- %string.regexp%
-}
-
-.%cssClass% .ace_comment {
- %comment%
-}
-
-.%cssClass% .ace_comment.ace_doc {
- %comment.doc%
-}
-
-.%cssClass% .ace_comment.ace_doc.ace_tag {
- %comment.doc.tag%
-}
-
-.%cssClass% .ace_variable {
- %variable%
-}
-
-.%cssClass% .ace_variable.ace_language {
- %variable.language%
-}
-
-.%cssClass% .ace_xml_pe {
- %xml_pe%
-}
-
-.%cssClass% .ace_meta {
- %meta%
-}
-
-.%cssClass% .ace_meta.ace_tag {
- %meta.tag%
-}
-
-.%cssClass% .ace_meta.ace_tag.ace_input {
- %ace.meta.tag.input%
-}
-
-.%cssClass% .ace_meta.ace_selector {
- %meta.selector%
-}
-
-.%cssClass% .ace_entity.ace_other.ace_attribute-name {
- %entity.other.attribute-name%
-}
-
-.%cssClass% .ace_entity.ace_name {
- %entity.name%
-}
-
-.%cssClass% .ace_entity.ace_name.ace_function {
- %entity.name.function%
-}
-
-.%cssClass% .ace_entity.ace_other.ace_inherited-class {
- %entity.other.inherited-class%
-}
-
-.%cssClass% .ace_entity.ace_name.ace_tag {
- %entity.name.tag%
-}
-
-.%cssClass% .ace_markup.ace_underline {
- text-decoration:underline;
-}
-
-.%cssClass% .ace_markup.ace_heading {
- %markup.heading%
-}
-
-.%cssClass% .ace_markup.ace_heading.ace_1 {
- %markup.heading.1%
-}
-
-.%cssClass% .ace_markup.ace_heading.ace_2 {
- %markup.heading.2%
-}
-
-.%cssClass% .ace_markup.ace_heading.ace_3 {
- %markup.heading.3%
-}
-
-.%cssClass% .ace_markup.ace_heading.ace_4 {
- %markup.heading.4%
-}
-
-.%cssClass% .ace_markup.ace_heading.ace_5 {
- %markup.heading.5%
-}
-
-.%cssClass% .ace_markup.ace_heading.ace_6 {
- %markup.heading.6%
-}
-
-.%cssClass% .ace_markup.ace_list {
- %markup.list%
-}
-
-.%cssClass% .ace_collab.ace_user1 {
- %collab.user1%
-}
\ No newline at end of file
diff --git a/tool/tmlanguage.js b/tool/tmlanguage.js
index 6a6fcb03..155d87c8 100644
--- a/tool/tmlanguage.js
+++ b/tool/tmlanguage.js
@@ -84,8 +84,12 @@ function checkForLookBehind(str) {
function removeXFlag(str) {
if (str.slice(0,4) == "(?x)") {
- str = str.substr(4).replace(/\\[\s#]|\s+|(?:#[^\n]*)/g, function(s) {
- return s[0] == "\\" ? s[1] : "";
+ str = str.replace(/\\.|\[([^\]\\]|\\.)*?\]|\s+|(?:#[^\n]*)/g, function(s) {
+ if (s[0] == "[")
+ return s;
+ if (s[0] == "\\")
+ return /[#\s]/.test(s[1]) ? s[1] : s;
+ return "";
});
}
return str;
diff --git a/tool/tmtheme.js b/tool/tmtheme.js
index 81104f0e..3faeb12a 100755
--- a/tool/tmtheme.js
+++ b/tool/tmtheme.js
@@ -77,6 +77,12 @@ var supportedScopes = {
"collab.user1": "collab.user1"
};
+var fallbackScopes = {
+ "keyword": "meta",
+ "support.type": "storage.type",
+ "variable": "entity.name.function"
+};
+
function extractStyles(theme) {
var globalSettings = theme.settings[0].settings;
@@ -96,33 +102,34 @@ function extractStyles(theme) {
};
for (var i=1; i 0) {
- if (unsupportedScopes[scope] === undefined) {
- unsupportedScopes[scope] = 1;
- }
- else {
- unsupportedScopes[scope] = unsupportedScopes[scope] + 1;
- }
- }
- }
+ var element = theme.settings[i];
+ if (!element.scope)
+ continue;
+ var scopes = element.scope.split(/\s*[|,]\s*/g);
+ for (var j = 0; j < scopes.length; j++) {
+ var scope = scopes[j];
+ var style = parseStyles(element.settings);
+
+ var aceScope = supportedScopes[scope];
+ if (aceScope) {
+ colors[aceScope] = style;
+ }
+ else if (style) {
+ unsupportedScopes[scope] = (unsupportedScopes[scope] || 0) + 1;
+ }
+ }
+ }
+
+ for (var i in fallbackScopes) {
+ if (!colors[i])
+ colors[i] = colors[fallbackScopes[i]];
}
if (!colors.fold) {
- var foldSource = colors["entity.name.function"] || colors.keyword;
- if (foldSource) {
- colors.fold = foldSource.match(/\:([^;]+)/)[1];
- }
+ var foldSource = colors["entity.name.function"] || colors.keyword;
+ if (foldSource) {
+ colors.fold = foldSource.match(/\:([^;]+)/)[1];
+ }
}
if (!colors.selected_word_highlight)
@@ -195,6 +202,28 @@ function quoteString(str) {
var cssTemplate = fs.readFileSync(__dirname + "/Theme.tmpl.css", "utf8");
var jsTemplate = fs.readFileSync(__dirname + "/Theme.tmpl.js", "utf8");
+function normalizeStylesheet(rules) {
+ for (var i = rules.length; i--; ) {
+ var s = JSON.stringify(rules[i].declarations);
+ for (var j = i; j --; ) {
+ if (s == JSON.stringify(rules[j].declarations)) {
+ console.log(rules[j].selectors, rules[i].selectors)
+ console.log(i, j)
+ rules[j].selectors = rules[i].selectors.concat(rules[j].selectors);
+ rules.splice(i, 1);
+ break;
+ }
+ }
+ }
+ for (var i = rules.length; i--; ) {
+ var s = rules[i].selectors.sort();
+ rules[i].selectors = s.filter(function(x, i) {
+ return x && x != s[i + 1];
+ });
+ }
+ return rules;
+}
+
var themes = {
//"chrome": "Chrome DevTools",
"clouds": "Clouds",
@@ -222,7 +251,7 @@ var themes = {
"tomorrow_night_eighties": "Tomorrow-Night-Eighties",
"twilight": "Twilight",
"vibrant_ink": "Vibrant Ink",
- "xcode": "Xcode_default"
+ //"xcode": "Xcode_default"
};
function convertTheme(name) {
@@ -235,6 +264,13 @@ function convertTheme(name) {
styles.uuid = theme.uuid;
var css = fillTemplate(cssTemplate, styles);
css = css.replace(/[^\{\}]+{\s*}/g, "");
+
+ for (var i in supportedScopes) {
+ if (!styles[i])
+ continue;
+ css += "." + styles.cssClass + " " +
+ i.replace(/^|\./g, ".ace_") + "{" + styles[i] + "}";
+ }
var js = fillTemplate(jsTemplate, {
name: name,
@@ -248,31 +284,34 @@ function convertTheme(name) {
// this way, we preserve all hand-modified rules in the .css rules,
// (because some exist, for collab1 and ace_indentation_guide
try {
- var outThemeCss = fs.readFileSync(__dirname + "/../lib/ace/theme/" + name + ".css");
- var parsedExistingFile = cssParse(outThemeCss);
- var parsedPotentialFile = cssParse(css);
+ var outThemeCss = fs.readFileSync(__dirname + "/../lib/ace/theme/" + name + ".css");
+ var oldRules = cssParse(outThemeCss).stylesheet.rules;
+ var newRules = cssParse(css).stylesheet.rules;
- for (var r = 0; r < parsedPotentialFile.stylesheet.rules.length; r++) {
- var potentialSelectors = parsedPotentialFile.stylesheet.rules[r].selectors;
- var found = false;
+ for (var i = 0; i < newRules.length; i++) {
+ var newSelectors = newRules[i].selectors;
- for (var e = 0; e < parsedExistingFile.stylesheet.rules.length; e++) {
- var existingSelectors = parsedExistingFile.stylesheet.rules[e].selectors;
-
- if (existingSelectors.join(",") === potentialSelectors.join(",")) {
- found = true;
- break;
- }
+ for (var j = 0; j < oldRules.length; j++) {
+ var oldSelectors = oldRules[j].selectors;
+ newSelectors = newSelectors.filter(function(s) {
+ return oldSelectors.indexOf(s) == -1;
+ })
+ if (!newSelectors.length)
+ break;
+ }
+ if (newSelectors.length) {
+ newRules[i].selectors = newSelectors;
+ console.log("Adding NEW rule: ", newRules[i])
+ oldRules.splice(i, 0, newRules[i]);
+ }
}
- if (!found) {
- console.log("Adding NEW rule: ", parsedPotentialFile.stylesheet.rules[r])
- parsedExistingFile.stylesheet.rules.splice(r, 0, parsedPotentialFile.stylesheet.rules[r]);
- }
- }
- css = cssStringify(parsedExistingFile, { compress: false });
+
+ oldRules = normalizeStylesheet(oldRules);
+
+ css = cssStringify({stylesheet: {rules: oldRules}}, { compress: false });
} catch(e) {
- console.log("Creating new file: " + name + ".css")
+ console.log("Creating new file: " + name + ".css")
}
fs.writeFileSync(__dirname + "/../lib/ace/theme/" + name + ".js", js);
@@ -286,11 +325,11 @@ for (var name in themes) {
var sortedUnsupportedScopes = {};
for (var u in unsupportedScopes) {
- var value = unsupportedScopes[u];
- if (sortedUnsupportedScopes[value] === undefined) {
- sortedUnsupportedScopes[value] = [];
- }
- sortedUnsupportedScopes[value].push(u);
+ var value = unsupportedScopes[u];
+ if (sortedUnsupportedScopes[value] === undefined) {
+ sortedUnsupportedScopes[value] = [];
+ }
+ sortedUnsupportedScopes[value].push(u);
}
console.log("I found these unsupported scopes:");
From ecfdc5fbc4691b7d3933416b65da340768111f04 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Wed, 12 Sep 2012 00:11:35 -0700
Subject: [PATCH 041/165] Update themes some more
---
kitchen-sink.html | 1 +
lib/ace/theme/clouds.css | 12 +-
lib/ace/theme/clouds_midnight.css | 12 +-
lib/ace/theme/merbivore.css | 1 +
lib/ace/theme/merbivore_soft.css | 1 +
lib/ace/theme/mono_industrial.css | 6 +-
lib/ace/theme/monokai.css | 1 +
lib/ace/theme/solarized_dark.css | 1 +
lib/ace/theme/solarized_light.css | 1 +
lib/ace/theme/tomorrow.css | 2 +
lib/ace/theme/tomorrow_night.css | 2 +
lib/ace/theme/tomorrow_night_blue.css | 2 +
lib/ace/theme/tomorrow_night_bright.css | 2 +
lib/ace/theme/tomorrow_night_eighties.css | 2 +
lib/ace/theme/xcode.css | 120 ++++
lib/ace/theme/xcode.js | 39 ++
tool/tmtheme.js | 6 +-
tool/tmthemes/Chrome DevTools.tmTheme | 294 +++++++++
tool/tmthemes/Dreamweaver.tmTheme | 521 ++++++++++++++++
tool/tmthemes/GitHub.tmTheme | 573 ++++++++++++++++++
...tmTheme => Textmate (Mac Classic).tmTheme} | 0
tool/tmthemes/Xcode_default.tmTheme | 240 ++++++++
22 files changed, 1835 insertions(+), 4 deletions(-)
create mode 100644 lib/ace/theme/xcode.css
create mode 100644 lib/ace/theme/xcode.js
create mode 100644 tool/tmthemes/Chrome DevTools.tmTheme
create mode 100644 tool/tmthemes/Dreamweaver.tmTheme
create mode 100644 tool/tmthemes/GitHub.tmTheme
rename tool/tmthemes/{Mac Classic.tmTheme => Textmate (Mac Classic).tmTheme} (100%)
create mode 100644 tool/tmthemes/Xcode_default.tmTheme
diff --git a/kitchen-sink.html b/kitchen-sink.html
index 43a128ea..176257d8 100644
--- a/kitchen-sink.html
+++ b/kitchen-sink.html
@@ -70,6 +70,7 @@
Solarized Light
TextMate
Tomorrow
+ XCode
Ambiance
diff --git a/lib/ace/theme/clouds.css b/lib/ace/theme/clouds.css
index 2fdc0815..e0e35f22 100644
--- a/lib/ace/theme/clouds.css
+++ b/lib/ace/theme/clouds.css
@@ -68,7 +68,8 @@
}
.ace-clouds .ace_keyword,
-.ace-clouds .ace_meta {
+.ace-clouds .ace_meta,
+.ace-clouds .ace_support.ace_constant.ace_property-value {
color: #AF956F
}
@@ -76,6 +77,10 @@
color: #484848
}
+.ace-clouds .ace_keyword.ace_other.ace_unit {
+ color: #96DC5F
+}
+
.ace-clouds .ace_constant.ace_language {
color: #39946A
}
@@ -84,6 +89,10 @@
color: #46A609
}
+.ace-clouds .ace_constant.ace_character.ace_entity {
+ color: #BF78CC
+}
+
.ace-clouds .ace_invalid {
background-color: #FF002A
}
@@ -109,6 +118,7 @@
color: #BCC8BA
}
+.ace-clouds .ace_entity.ace_name.ace_tag,
.ace-clouds .ace_entity.ace_other.ace_attribute-name {
color: #606060
}
diff --git a/lib/ace/theme/clouds_midnight.css b/lib/ace/theme/clouds_midnight.css
index 2d4ea2d1..70c5dd34 100644
--- a/lib/ace/theme/clouds_midnight.css
+++ b/lib/ace/theme/clouds_midnight.css
@@ -68,7 +68,8 @@
}
.ace-clouds-midnight .ace_keyword,
-.ace-clouds-midnight .ace_meta {
+.ace-clouds-midnight .ace_meta,
+.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {
color: #927C5D
}
@@ -76,6 +77,10 @@
color: #4B4B4B
}
+.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {
+ color: #366F1A
+}
+
.ace-clouds-midnight .ace_constant.ace_language {
color: #39946A
}
@@ -84,6 +89,10 @@
color: #46A609
}
+.ace-clouds-midnight .ace_constant.ace_character.ace_entity {
+ color: #A165AC
+}
+
.ace-clouds-midnight .ace_invalid {
color: #FFFFFF;
background-color: #E92E2E
@@ -110,6 +119,7 @@
color: #3C403B
}
+.ace-clouds-midnight .ace_entity.ace_name.ace_tag,
.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {
color: #606060
}
diff --git a/lib/ace/theme/merbivore.css b/lib/ace/theme/merbivore.css
index 7a4f0522..75105771 100644
--- a/lib/ace/theme/merbivore.css
+++ b/lib/ace/theme/merbivore.css
@@ -67,6 +67,7 @@
color: #404040
}
+.ace-merbivore .ace_entity.ace_name.ace_tag,
.ace-merbivore .ace_keyword,
.ace-merbivore .ace_meta,
.ace-merbivore .ace_meta.ace_tag,
diff --git a/lib/ace/theme/merbivore_soft.css b/lib/ace/theme/merbivore_soft.css
index 4069e99a..aa5d02b7 100644
--- a/lib/ace/theme/merbivore_soft.css
+++ b/lib/ace/theme/merbivore_soft.css
@@ -67,6 +67,7 @@
color: #404040
}
+.ace-merbivore-soft .ace_entity.ace_name.ace_tag,
.ace-merbivore-soft .ace_keyword,
.ace-merbivore-soft .ace_meta,
.ace-merbivore-soft .ace_meta.ace_tag,
diff --git a/lib/ace/theme/mono_industrial.css b/lib/ace/theme/mono_industrial.css
index 065382a9..3af8d934 100644
--- a/lib/ace/theme/mono_industrial.css
+++ b/lib/ace/theme/mono_industrial.css
@@ -132,6 +132,10 @@
text-decoration: underline
}
+.ace-mono-industrial .ace_entity.ace_name.ace_tag {
+ color: #A65EFF
+}
+
.ace-mono-industrial .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ0tH4zzBz5sz/ABAOBECKH+evAAAAAElFTkSuQmCC) right repeat-y
-}
\ No newline at end of file
+}
diff --git a/lib/ace/theme/monokai.css b/lib/ace/theme/monokai.css
index a0b21851..77afbd61 100644
--- a/lib/ace/theme/monokai.css
+++ b/lib/ace/theme/monokai.css
@@ -67,6 +67,7 @@
color: #49483E
}
+.ace-monokai .ace_entity.ace_name.ace_tag,
.ace-monokai .ace_keyword,
.ace-monokai .ace_meta,
.ace-monokai .ace_storage {
diff --git a/lib/ace/theme/solarized_dark.css b/lib/ace/theme/solarized_dark.css
index 6de92823..a5b48472 100644
--- a/lib/ace/theme/solarized_dark.css
+++ b/lib/ace/theme/solarized_dark.css
@@ -92,6 +92,7 @@
}
.ace-solarized-dark .ace_entity.ace_name.ace_function,
+.ace-solarized-dark .ace_entity.ace_name.ace_tag,
.ace-solarized-dark .ace_support.ace_function,
.ace-solarized-dark .ace_variable,
.ace-solarized-dark .ace_variable.ace_language {
diff --git a/lib/ace/theme/solarized_light.css b/lib/ace/theme/solarized_light.css
index 4a3e0c25..e56c0430 100644
--- a/lib/ace/theme/solarized_light.css
+++ b/lib/ace/theme/solarized_light.css
@@ -93,6 +93,7 @@
}
.ace-solarized-light .ace_entity.ace_name.ace_function,
+.ace-solarized-light .ace_entity.ace_name.ace_tag,
.ace-solarized-light .ace_support.ace_function,
.ace-solarized-light .ace_variable,
.ace-solarized-light .ace_variable.ace_language {
diff --git a/lib/ace/theme/tomorrow.css b/lib/ace/theme/tomorrow.css
index f59686b1..c4511eeb 100644
--- a/lib/ace/theme/tomorrow.css
+++ b/lib/ace/theme/tomorrow.css
@@ -82,6 +82,7 @@
.ace-tomorrow .ace_constant.ace_character,
.ace-tomorrow .ace_constant.ace_language,
.ace-tomorrow .ace_constant.ace_numeric,
+.ace-tomorrow .ace_keyword.ace_other.ace_unit,
.ace-tomorrow .ace_support.ace_constant,
.ace-tomorrow .ace_variable.ace_parameter {
color: #F5871F
@@ -122,6 +123,7 @@
color: #718C00
}
+.ace-tomorrow .ace_entity.ace_name.ace_tag,
.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,
.ace-tomorrow .ace_meta.ace_tag,
.ace-tomorrow .ace_string.ace_regexp,
diff --git a/lib/ace/theme/tomorrow_night.css b/lib/ace/theme/tomorrow_night.css
index 3f7c8661..ec96fdcc 100644
--- a/lib/ace/theme/tomorrow_night.css
+++ b/lib/ace/theme/tomorrow_night.css
@@ -82,6 +82,7 @@
.ace-tomorrow-night .ace_constant.ace_character,
.ace-tomorrow-night .ace_constant.ace_language,
.ace-tomorrow-night .ace_constant.ace_numeric,
+.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,
.ace-tomorrow-night .ace_support.ace_constant,
.ace-tomorrow-night .ace_variable.ace_parameter {
color: #DE935F
@@ -122,6 +123,7 @@
color: #B5BD68
}
+.ace-tomorrow-night .ace_entity.ace_name.ace_tag,
.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,
.ace-tomorrow-night .ace_meta.ace_tag,
.ace-tomorrow-night .ace_string.ace_regexp,
diff --git a/lib/ace/theme/tomorrow_night_blue.css b/lib/ace/theme/tomorrow_night_blue.css
index 07849e33..bd77e5af 100644
--- a/lib/ace/theme/tomorrow_night_blue.css
+++ b/lib/ace/theme/tomorrow_night_blue.css
@@ -83,6 +83,7 @@
.ace-tomorrow-night-blue .ace_constant.ace_character,
.ace-tomorrow-night-blue .ace_constant.ace_language,
.ace-tomorrow-night-blue .ace_constant.ace_numeric,
+.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,
.ace-tomorrow-night-blue .ace_support.ace_constant,
.ace-tomorrow-night-blue .ace_variable.ace_parameter {
color: #FFC58F
@@ -119,6 +120,7 @@
color: #D1F1A9
}
+.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,
.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,
.ace-tomorrow-night-blue .ace_meta.ace_tag,
.ace-tomorrow-night-blue .ace_string.ace_regexp,
diff --git a/lib/ace/theme/tomorrow_night_bright.css b/lib/ace/theme/tomorrow_night_bright.css
index 4f74c2b9..18860611 100644
--- a/lib/ace/theme/tomorrow_night_bright.css
+++ b/lib/ace/theme/tomorrow_night_bright.css
@@ -82,6 +82,7 @@
.ace-tomorrow-night-bright .ace_constant.ace_character,
.ace-tomorrow-night-bright .ace_constant.ace_language,
.ace-tomorrow-night-bright .ace_constant.ace_numeric,
+.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,
.ace-tomorrow-night-bright .ace_support.ace_constant,
.ace-tomorrow-night-bright .ace_variable.ace_parameter {
color: #E78C45
@@ -122,6 +123,7 @@
color: #B9CA4A
}
+.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,
.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,
.ace-tomorrow-night-bright .ace_meta.ace_tag,
.ace-tomorrow-night-bright .ace_string.ace_regexp,
diff --git a/lib/ace/theme/tomorrow_night_eighties.css b/lib/ace/theme/tomorrow_night_eighties.css
index 469f3186..dfc38b64 100644
--- a/lib/ace/theme/tomorrow_night_eighties.css
+++ b/lib/ace/theme/tomorrow_night_eighties.css
@@ -83,6 +83,7 @@
.ace-tomorrow-night-eighties .ace_constant.ace_character,
.ace-tomorrow-night-eighties .ace_constant.ace_language,
.ace-tomorrow-night-eighties .ace_constant.ace_numeric,
+.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,
.ace-tomorrow-night-eighties .ace_support.ace_constant,
.ace-tomorrow-night-eighties .ace_variable.ace_parameter {
color: #F99157
@@ -123,6 +124,7 @@
color: #999999
}
+.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,
.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,
.ace-tomorrow-night-eighties .ace_meta.ace_tag,
.ace-tomorrow-night-eighties .ace_variable {
diff --git a/lib/ace/theme/xcode.css b/lib/ace/theme/xcode.css
new file mode 100644
index 00000000..c457d2f7
--- /dev/null
+++ b/lib/ace/theme/xcode.css
@@ -0,0 +1,120 @@
+.ace-xcode .ace_editor,
+/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */
+
+.ace-xcode .ace_editor {
+ border: 2px solid rgb(159, 159, 159)
+}
+
+.ace-xcode .ace_editor.ace_focus {
+ border: 2px solid #327fbd
+}
+
+.ace-xcode .ace_gutter {
+ background: #e8e8e8;
+ color: #333
+}
+
+.ace-xcode .ace_print_margin {
+ width: 1px;
+ background: #e8e8e8
+}
+
+.ace-xcode .ace_scroller {
+ background-color: #FFFFFF
+}
+
+.ace-xcode .ace_text-layer {
+ color: #000000
+}
+
+.ace-xcode .ace_cursor {
+ border-left: 2px solid #000000
+}
+
+.ace-xcode .ace_cursor.ace_overwrite {
+ border-left: 0px;
+ border-bottom: 1px solid #000000
+}
+
+.ace-xcode .ace_marker-layer .ace_selection {
+ background: #B5D5FF
+}
+
+.ace-xcode.multiselect .ace_selection.start {
+ box-shadow: 0 0 3px 0px #FFFFFF;
+ border-radius: 2px
+}
+
+.ace-xcode .ace_marker-layer .ace_step {
+ background: rgb(198, 219, 174)
+}
+
+.ace-xcode .ace_marker-layer .ace_bracket {
+ margin: -1px 0 0 -1px;
+ border: 1px solid #BFBFBF
+}
+
+.ace-xcode .ace_marker-layer .ace_active_line {
+ background: rgba(0, 0, 0, 0.071)
+}
+
+.ace-xcode .ace_gutter_active_line {
+ background-color: rgba(0, 0, 0, 0.071)
+}
+
+.ace-xcode .ace_marker-layer .ace_selected_word {
+ border: 1px solid #B5D5FF
+}
+
+.ace-xcode .ace_constant.ace_language,
+.ace-xcode .ace_keyword,
+.ace-xcode .ace_meta,
+.ace-xcode .ace_variable.ace_language {
+ color: #C800A4
+}
+
+.ace-xcode .ace_invisible {
+ color: #BFBFBF
+}
+
+.ace-xcode .ace_constant.ace_character,
+.ace-xcode .ace_constant.ace_other {
+ color: #275A5E
+}
+
+.ace-xcode .ace_constant.ace_numeric {
+ color: #3A00DC
+}
+
+.ace-xcode .ace_entity.ace_other.ace_attribute-name,
+.ace-xcode .ace_support.ace_constant,
+.ace-xcode .ace_support.ace_function {
+ color: #450084
+}
+
+.ace-xcode .ace_fold {
+ background-color: #C800A4;
+ border-color: #000000
+}
+
+.ace-xcode .ace_entity.ace_name.ace_tag,
+.ace-xcode .ace_support.ace_class,
+.ace-xcode .ace_support.ace_type {
+ color: #790EAD
+}
+
+.ace-xcode .ace_storage {
+ color: #C900A4
+}
+
+.ace-xcode .ace_string {
+ color: #DF0002
+}
+
+.ace-xcode .ace_comment {
+ color: #008E00
+}
+
+.ace-xcode .ace_markup.ace_underline {
+ text-decoration: underline
+}
\ No newline at end of file
diff --git a/lib/ace/theme/xcode.js b/lib/ace/theme/xcode.js
new file mode 100644
index 00000000..c6cba5b9
--- /dev/null
+++ b/lib/ace/theme/xcode.js
@@ -0,0 +1,39 @@
+/* ***** 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(function(require, exports, module) {
+
+exports.isDark = false;
+exports.cssClass = "ace-xcode";
+exports.cssText = require('ace/requirejs/text!./xcode.css');
+
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
+});
diff --git a/tool/tmtheme.js b/tool/tmtheme.js
index 3faeb12a..c78626cb 100755
--- a/tool/tmtheme.js
+++ b/tool/tmtheme.js
@@ -16,6 +16,7 @@ var unsupportedScopes = { };
var supportedScopes = {
"keyword": "keyword",
"keyword.operator": "keyword.operator",
+ "keyword.other.unit": "keyword.other.unit",
"constant": "constant",
"constant.language": "constant.language",
@@ -23,6 +24,7 @@ var supportedScopes = {
"constant.numeric": "constant.numeric",
"constant.character" : "constant.character",
"constant.character.escape" : "constant.character.escape",
+ "constant.character.entity": "constant.character.entity",
"constant.other" : "constant.other",
"support": "support",
@@ -31,6 +33,7 @@ var supportedScopes = {
"support.function.firebug": "support.firebug",
"support.function.constant": "support.function.constant",
"support.constant": "support.constant",
+ "support.constant.property-value": "support.constant.property-value",
"support.class": "support.class",
"support.type": "support.type",
"support.other": "support.other",
@@ -59,11 +62,12 @@ var supportedScopes = {
"meta": "meta",
"meta.tag.sgml.doctype": "xml_pe",
"meta.tag": "meta.tag",
- "meta.tag.form": "meta.tag.form",
+ "meta.selector": "meta.selector",
"entity.other.attribute-name": "entity.other.attribute-name",
"entity.name.function": "entity.name.function",
"entity.name": "entity.name",
+ "entity.name.tag": "entity.name.tag",
"markup.heading": "markup.heading",
"markup.heading.1": "markup.heading.1",
diff --git a/tool/tmthemes/Chrome DevTools.tmTheme b/tool/tmthemes/Chrome DevTools.tmTheme
new file mode 100644
index 00000000..8f14e4fa
--- /dev/null
+++ b/tool/tmthemes/Chrome DevTools.tmTheme
@@ -0,0 +1,294 @@
+
+
+
+
+ author
+ Austin Cummings
+ name
+ Chrome DevTools
+ settings
+
+
+ settings
+
+ background
+ #FFFFFF
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #B3B3B3F4
+ lineHighlight
+ #0000001A
+ selection
+ #BAD6FD
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #C41A16
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #1C00CF
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #AA0D91
+
+
+
+ name
+ Operator
+ scope
+ keyword.operator
+ settings
+
+ foreground
+ #000000
+
+
+
+ name
+ Identifier
+ scope
+ constant.language
+ settings
+
+ foreground
+ #AA0D91
+
+
+
+ name
+ Exception
+ scope
+ support.class.exception
+ settings
+
+ foreground
+ #990000
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ foreground
+ #000000
+
+
+
+
+ name
+ Type name
+ scope
+ entity.name.type
+ settings
+
+ fontStyle
+ bold underline
+
+
+
+ name
+ Arguments
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+
+ foreground
+ #007400
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+
+ foreground
+ #FF0000
+
+
+
+ name
+ Trailing whitespace
+ scope
+ invalid.deprecated.trailing-whitespace
+ settings
+
+ background
+ #E71A1100
+
+
+
+ name
+ Embedded source
+ scope
+ text source
+ settings
+
+ background
+ #FAFAFAFC
+ foreground
+ #000000
+
+
+
+ name
+ Tag
+ scope
+ meta.tag, declaration.tag
+ settings
+
+ foreground
+ #AA0D91
+
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #000000
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+
+ foreground
+ #AA0D91
+
+
+
+ name
+ Section name
+ scope
+ entity.name.section
+ settings
+
+ fontStyle
+ bold underline
+
+
+
+ name
+ Frame title
+ scope
+ entity.name.function.frame
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #000000
+
+
+
+
+ name
+ XML Declaration
+ scope
+ meta.tag.preprocessor.xml
+ settings
+
+ foreground
+ #333333
+
+
+
+ name
+ Tag Attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+ italic
+ foreground
+
+ #994500
+
+
+
+ name
+ Tag Name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #881280
+
+
+
+
+ uuid
+ 4FCFA210-B247-11D9-9D00-000D93347A42
+
+
diff --git a/tool/tmthemes/Dreamweaver.tmTheme b/tool/tmthemes/Dreamweaver.tmTheme
new file mode 100644
index 00000000..466863af
--- /dev/null
+++ b/tool/tmthemes/Dreamweaver.tmTheme
@@ -0,0 +1,521 @@
+
+
+
+
+ comment
+ By Jim Isaacs - jimisaacs.com
+ name
+ Dreamweaver
+ settings
+
+
+ settings
+
+ background
+ #FFFFFF
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #00000012
+ selection
+ #5EA0FF
+
+
+
+ name
+ text
+ scope
+ text
+ settings
+
+ foreground
+ #000000
+
+
+
+ name
+ constant numeric
+ scope
+ constant.numeric - source.css
+ settings
+
+ fontStyle
+
+ foreground
+ #EE000B
+
+
+
+ name
+ comment general
+ scope
+ comment
+ settings
+
+ fontStyle
+
+ foreground
+ #9A9A9A
+
+
+
+ name
+ html meta
+ scope
+ text.html meta.tag
+ settings
+
+ fontStyle
+
+ foreground
+ #00359E
+
+
+
+ name
+ html string
+ scope
+ text.html.basic meta.tag string.quoted - source
+ settings
+
+ foreground
+ #001EFF
+
+
+
+ name
+ html contstant
+ scope
+ text.html.basic constant.character.entity.html
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #000000
+
+
+
+ name
+ html a tag
+ scope
+ text.html meta.tag.a - string
+ settings
+
+ fontStyle
+
+ foreground
+ #106800
+
+
+
+ name
+ html img tag
+ scope
+ text.html meta.tag.img - string
+ settings
+
+ foreground
+ #6D232E
+
+
+
+ name
+ html form tag
+ scope
+ text.html meta.tag.form - string
+ settings
+
+ foreground
+ #FF9700
+
+
+
+ name
+ html table
+ scope
+ text.html meta.tag.table - string
+ settings
+
+ foreground
+ #009079
+
+
+
+ name
+ js embedded
+ scope
+ source.js.embedded.html punctuation.definition.tag - source.php, source.js.embedded.html entity.name.tag.script, source.js.embedded entity.other.attribute-name - source.js string
+ settings
+
+ fontStyle
+
+ foreground
+ #842B44
+
+
+
+ name
+ js comment
+ scope
+ source.js comment - source.php
+ settings
+
+ foreground
+ #9A9A9A
+
+
+
+ name
+ js meta function
+ scope
+ source.js meta.function - source.php
+ settings
+
+ fontStyle
+
+ foreground
+ #000000
+
+
+
+ name
+ js instance / support.function
+ scope
+ source.js meta.class - source.php, source.js support.function - source.php
+ settings
+
+ foreground
+ #24C696
+
+
+
+ name
+ js string
+ scope
+ source.js string - source.php, source.js keyword.operator
+ settings
+
+ fontStyle
+
+ foreground
+ #0035FF
+
+
+
+ name
+ js support
+ scope
+ source.js support.class
+ settings
+
+ foreground
+ #7E00B7
+
+
+
+ name
+ js storage
+ scope
+ source.js storage
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #000000
+
+
+
+ name
+ js storage (not function) / bool / new / braces
+ scope
+ source.js storage - storage.type.function - source.php, source.js constant - source.php, source.js keyword - source.php, source.js variable.language, source.js meta.brace, source.js punctuation.definition.parameters.begin, source.js punctuation.definition.parameters.end
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #05208C
+
+
+
+ name
+ js regexp
+ scope
+ source.js string.regexp, source.js string.regexp constant
+ settings
+
+ foreground
+ #106800
+
+
+
+ name
+ css embedded
+ scope
+ source.css.embedded.html punctuation.definition.tag, source.css.embedded.html entity.name.tag.style, source.css.embedded entity.other.attribute-name - meta.selector
+ settings
+
+ foreground
+ #8D00B7
+
+
+
+ name
+ css @import
+ scope
+ source.css meta.at-rule.import.css
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #009C7F
+
+
+
+ name
+ css @important
+ scope
+ source.css keyword.other.important
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #EE000B
+
+
+
+ name
+ css @media
+ scope
+ source.css meta.at-rule.media
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #430303
+
+
+
+ name
+ css string
+ scope
+ source.css string
+ settings
+
+ foreground
+ #106800
+
+
+
+ name
+ css selector/prop-list
+ scope
+ source.css meta.selector, source.css meta.property-list, source.css meta.at-rule
+ settings
+
+ foreground
+ #DA29FF
+
+
+
+ name
+ css punctuation
+ scope
+ source.css punctuation.separator - source.php, source.css punctuation.terminator - source.php
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #DA29FF
+
+
+
+ name
+ css property name
+ scope
+ source.css meta.property-name
+ settings
+
+ foreground
+ #05208C
+
+
+
+ name
+ css property value
+ scope
+ source.css meta.property-value
+ settings
+
+ foreground
+ #0035FF
+
+
+
+ name
+ php begin/end block
+ scope
+ source.php punctuation.section.embedded.begin, source.php punctuation.section.embedded.end
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #EE000B
+
+
+
+ name
+ php
+ scope
+ source.php - punctuation.section
+ settings
+
+ fontStyle
+
+ foreground
+ #000000
+
+
+
+ name
+ php varaible
+ scope
+ source.php variable, source.php meta.function.arguments
+ settings
+
+ foreground
+ #000000
+
+
+
+ name
+ php punctuation
+ scope
+ source.php punctuation - string - variable - meta.function
+ settings
+
+ foreground
+ #05208C
+
+
+
+ name
+ php storage.type
+ scope
+ source.php storage.type
+ settings
+
+ foreground
+ #24BF96
+
+
+
+ name
+ php keyword general / storage misc
+ scope
+ source.php keyword - comment, source.php storage.type.class, source.php storage.type.interface, source.php storage.modifier, source.php constant.language
+ settings
+
+ foreground
+ #009714
+
+
+
+ name
+ php support / storage / operator
+ scope
+ source.php support , source.php storage, source.php keyword.operator, source.php storage.type.function
+ settings
+
+ foreground
+ #0035FF
+
+
+
+ name
+ php varaible global
+ scope
+ source.php variable.other.global
+ settings
+
+ foreground
+ #0092F2
+
+
+
+ name
+ php support constant
+ scope
+ source.php support.constant, source.php constant.language.php
+ settings
+
+ foreground
+ #551D02
+
+
+
+ name
+ php string
+ scope
+ source.php string, source.php string keyword.operator
+ settings
+
+ fontStyle
+
+ foreground
+ #E20000
+
+
+
+ name
+ php string variable
+ scope
+ source.php string.quoted.double variable
+ settings
+
+ foreground
+ #FF6200
+
+
+
+ name
+ php comment general
+ scope
+ source.php comment
+ settings
+
+ foreground
+ #FF9404
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #EFFF8A
+ fontStyle
+ bold
+ foreground
+ #EE000B
+
+
+
+ uuid
+ 4C43099A-C325-4F56-BACB-F332209207B0
+
+
diff --git a/tool/tmthemes/GitHub.tmTheme b/tool/tmthemes/GitHub.tmTheme
new file mode 100644
index 00000000..aa21abce
--- /dev/null
+++ b/tool/tmthemes/GitHub.tmTheme
@@ -0,0 +1,573 @@
+
+
+
+
+ author
+ Martin Kühl
+ comment
+ A theme based on the GitHub code stylesheet.
+ name
+ GitHub
+ settings
+
+
+ comment
+
+background #files .file .data background-color
+caret #files .file .meta color
+invisibles .syntax .w
+lineHighlight #FFFEEB #files .file .private background-color
+ alt: #FFFFCC colour that gets added via javascript
+selection #B4D5FE handmade :-)
+ alt: #FFFFCC colour that gets added via javascript
+ #EAF2F5 #header .userbox background-color
+ #EAEAEA #files .file background-color
+ #DEDEDE #files .file border-color
+ #F9EA86 Mac OS X system selection colour “Gold”
+
+ settings
+
+ background
+ #F8F8FF
+ caret
+ #666666
+ foreground
+ #000000
+ invisibles
+ #BBBBBB
+ lineHighlight
+ #FFFEEB
+ selection
+ #B4D5FE
+
+
+
+ comment
+ .syntax .c, .syntax .c[ml]
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #999988
+
+
+
+ name
+ Comment.Preproc
+ scope
+ comment.block.preprocessor
+ settings
+
+ comment
+ .syntax .cp
+ fontStyle
+ bold
+ foreground
+ #999999
+
+
+
+ name
+ Comment.Special
+ scope
+ comment.documentation, comment.block.documentation
+ settings
+
+ comment
+ .syntax .cs
+ fontStyle
+ bold italic
+ foreground
+ #999999
+
+
+
+ name
+ Error
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #E3D2D2
+ comment
+ .syntax .err
+ foreground
+ #A61717
+
+
+
+ comment
+ .syntax .k, .syntax .k[dpr]
+ name
+ Keyword
+ scope
+ keyword, storage
+ settings
+
+ fontStyle
+ bold
+
+
+
+ comment
+ .syntax .o, .syntax .ow
+ name
+ Operator
+ scope
+ keyword.operator
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Keyword.Constant
+ scope
+ constant.language, support.constant
+ settings
+
+ comment
+ .style .kc
+ fontStyle
+ bold
+
+
+
+ name
+ Keyword.Type
+ scope
+ storage.type, support.type
+ settings
+
+ comment
+ .style .kt
+ fontStyle
+ bold
+ foreground
+ #445588
+
+
+
+ name
+ Name.Attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ comment
+ .style .na
+ foreground
+ #008080
+
+
+
+ name
+ Name.Builtin
+ scope
+ variable.other
+ settings
+
+ comment
+ .style .nb
+ foreground
+ #0086B3
+
+
+
+ name
+ Name.Builtin.Pseudo
+ scope
+ variable.language
+ settings
+
+ comment
+ .style .bp
+ foreground
+ #999999
+
+
+
+ comment
+ TODO: support.class is styled as Name.Constant on GitHub.
+ name
+ Name.Class
+ scope
+ entity.name.type, entity.other.inherited-class, support.class
+ settings
+
+ comment
+ .style .nc
+ fontStyle
+ bold
+ foreground
+ #445588
+
+
+
+ name
+ Name.Constant
+ scope
+ variable.other.constant
+ settings
+
+ comment
+ .style .no
+ foreground
+ #008080
+
+
+
+ name
+ Name.Entity
+ scope
+ constant.character.entity
+ settings
+
+ comment
+ .style .ni
+ foreground
+ #800080
+
+
+
+ name
+ Name.Exception
+ scope
+ entity.name.exception
+ settings
+
+ comment
+ .style .ne
+ foreground
+ #990000
+
+
+
+ name
+ Name.Function
+ scope
+ entity.name.function, support.function, keyword.other.name-of-parameter
+ settings
+
+ comment
+ .style .nf
+ foreground
+ #990000
+
+
+
+ name
+ Name.Namespace
+ scope
+ entity.name.section
+ settings
+
+ comment
+ .style .nn
+ foreground
+ #555555
+
+
+
+ name
+ Name.Tag
+ scope
+ entity.name.tag
+ settings
+
+ comment
+ .style .nt
+ foreground
+ #000080
+
+
+
+ name
+ Name.Variable
+ scope
+ variable.parameter, support.variable
+ settings
+
+ comment
+ .style .nv, .style .v[cgi]
+ foreground
+ #008080
+
+
+
+ name
+ Literal.Number
+ scope
+ constant.numeric, constant.other
+ settings
+
+ comment
+ .style .m, .style .m[fhio], .style .il
+ foreground
+ #009999
+
+
+
+ name
+ Literal.String
+ scope
+ string - string source, constant.character
+ settings
+
+ comment
+ .style .s[bcd2ehixl]
+ fontStyle
+
+ foreground
+ #DD1144
+
+
+
+ name
+ Literal.String.Regex
+ scope
+ string.regexp
+ settings
+
+ comment
+ .style .sr
+ foreground
+ #009926
+
+
+
+ name
+ Literal.String.Symbol
+ scope
+ constant.other.symbol
+ settings
+
+ comment
+ .style .ss
+ foreground
+ #990073
+
+
+
+ name
+ Punctuation
+ scope
+ punctuation
+ settings
+
+ fontStyle
+ bold
+
+
+
+ name
+ Generic.Deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #FFDDDD
+ comment
+ .syntax .gd
+ foreground
+ #000000
+
+
+
+ name
+ Generic.Emph
+ scope
+ markup.italic
+ settings
+
+ comment
+ .syntax .ge
+ fontStyle
+ italic
+
+
+
+ name
+ Generic.Error
+ scope
+ markup.error
+ settings
+
+ comment
+ .syntax .gr
+ foreground
+ #AA0000
+
+
+
+ name
+ Generic.Heading
+ scope
+ markup.heading.1
+ settings
+
+ comment
+ .syntax .gh
+ foreground
+ #999999
+
+
+
+ name
+ Generic.Inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #DDFFDD
+ comment
+ .syntax .gi
+ foreground
+ #000000
+
+
+
+ name
+ Generic.Output
+ scope
+ markup.output, markup.raw
+ settings
+
+ comment
+ .syntax .go
+ foreground
+ #888888
+
+
+
+ name
+ Generic.Prompt
+ scope
+ markup.prompt
+ settings
+
+ comment
+ .syntax .gp
+ foreground
+ #555555
+
+
+
+ name
+ Generic.Strong
+ scope
+ markup.bold
+ settings
+
+ comment
+ .syntax .gs
+ fontStyle
+ bold
+
+
+
+ name
+ Generic.Subheading
+ scope
+ markup.heading
+ settings
+
+ comment
+ .syntax .gu
+ foreground
+ #AAAAAA
+
+
+
+ name
+ Generic.Traceback
+ scope
+ markup.traceback
+ settings
+
+ comment
+ .syntax .gt
+ foreground
+ #AA0000
+
+
+
+ name
+ Generic.Underline
+ scope
+ markup.underline
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Extra: Diff Range
+ scope
+ meta.diff.range, meta.diff.index, meta.separator
+ settings
+
+ background
+ #EAF2F5
+ comment
+ .syntax .gc
+ foreground
+ #999999
+
+
+
+ name
+ Extra: Diff From
+ scope
+ meta.diff.header.from-file
+ settings
+
+ background
+ #FFDDDD
+ foreground
+ #999999
+
+
+
+ name
+ Extra: Diff To
+ scope
+ meta.diff.header.to-file
+ settings
+
+ background
+ #DDFFDD
+ foreground
+ #999999
+
+
+
+ name
+ Extra: Link
+ scope
+ meta.link
+ settings
+
+ fontStyle
+
+ foreground
+ #4183C4
+
+
+
+ uuid
+ FDD6F02A-74F7-4B6C-97F1-857D792EC90E
+
+
diff --git a/tool/tmthemes/Mac Classic.tmTheme b/tool/tmthemes/Textmate (Mac Classic).tmTheme
similarity index 100%
rename from tool/tmthemes/Mac Classic.tmTheme
rename to tool/tmthemes/Textmate (Mac Classic).tmTheme
diff --git a/tool/tmthemes/Xcode_default.tmTheme b/tool/tmthemes/Xcode_default.tmTheme
new file mode 100644
index 00000000..c7b5072c
--- /dev/null
+++ b/tool/tmthemes/Xcode_default.tmTheme
@@ -0,0 +1,240 @@
+
+
+
+
+ comment
+ Carmine Paolino
+ name
+ Xcode default
+ settings
+
+
+ settings
+
+ background
+ #FFFFFF
+ caret
+ #000000
+ foreground
+ #000000
+ invisibles
+ #BFBFBF
+ lineHighlight
+ #00000012
+ selection
+ #B5D5FF
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ foreground
+ #008E00
+
+
+
+ name
+ Preprocessor Statements
+ scope
+ meta.preprocessor, keyword.control.import
+ settings
+
+ foreground
+ #7D4726
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #DF0002
+
+
+
+ name
+ Number
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #3A00DC
+
+
+
+ name
+ Built-in constant
+ scope
+ constant.language
+ settings
+
+ foreground
+ #C800A4
+
+
+
+ name
+ User-defined constant
+ scope
+ constant.character, constant.other
+ settings
+
+ foreground
+ #275A5E
+
+
+
+ name
+ Variable
+ scope
+ variable.language, variable.other
+ settings
+
+ foreground
+ #C800A4
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ foreground
+ #C800A4
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #C900A4
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class
+ settings
+
+ foreground
+ #438288
+
+
+
+ name
+ Inherited class
+ scope
+ entity.other.inherited-class
+ settings
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #790EAD
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #450084
+
+
+
+ name
+ Library function
+ scope
+ support.function
+ settings
+
+ foreground
+ #450084
+
+
+
+ name
+ Library constant
+ scope
+ support.constant
+ settings
+
+ foreground
+ #450084
+
+
+
+ name
+ Library class/type
+ scope
+ support.type, support.class
+ settings
+
+ foreground
+ #790EAD
+
+
+
+ name
+ Library variable
+ scope
+ support.other.variable
+ settings
+
+ foreground
+ #790EAD
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+
+
+ uuid
+ EE3AD170-2B7F-4DE1-B724-C75F13FE0085
+
+
From a6ce721d92867ac5791814076f9da79f642de287 Mon Sep 17 00:00:00 2001
From: nightwing
Date: Wed, 19 Sep 2012 16:20:57 +0400
Subject: [PATCH 042/165] add indent guides for ambiance and xcode
---
lib/ace/theme/ambiance.css | 4 ++++
lib/ace/theme/xcode.css | 6 ++----
tool/tmtheme.js | 31 ++++++++++++++++++++++++++++++-
3 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/lib/ace/theme/ambiance.css b/lib/ace/theme/ambiance.css
index fba5dcc3..6468d9b4 100644
--- a/lib/ace/theme/ambiance.css
+++ b/lib/ace/theme/ambiance.css
@@ -231,3 +231,7 @@
.ace-ambiance .ace_text-layer {
background-image: url("data:image/png;base64,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");
}
+
+.ace-ambiance .ace_indent-guide {
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC") right repeat-y;
+}
\ No newline at end of file
diff --git a/lib/ace/theme/xcode.css b/lib/ace/theme/xcode.css
index c457d2f7..4ff0646a 100644
--- a/lib/ace/theme/xcode.css
+++ b/lib/ace/theme/xcode.css
@@ -1,6 +1,4 @@
-.ace-xcode .ace_editor,
/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */
-
.ace-xcode .ace_editor {
border: 2px solid rgb(159, 159, 159)
}
@@ -115,6 +113,6 @@
color: #008E00
}
-.ace-xcode .ace_markup.ace_underline {
- text-decoration: underline
+.ace-xcode .ace_indent-guide {
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y;
}
\ No newline at end of file
diff --git a/tool/tmtheme.js b/tool/tmtheme.js
index c78626cb..9480c0a2 100755
--- a/tool/tmtheme.js
+++ b/tool/tmtheme.js
@@ -339,4 +339,33 @@ for (var u in unsupportedScopes) {
console.log("I found these unsupported scopes:");
console.log(sortedUnsupportedScopes);
console.log("It's safe to ignore these, but they may affect your syntax highlighting if your mode depends on any of these rules.");
-console.log("Refer to the docs on ace.ajax.org for information on how to add a scope to the CSS generator.");
\ No newline at end of file
+console.log("Refer to the docs on ace.ajax.org for information on how to add a scope to the CSS generator.");
+
+
+/*** TODO: generate images for indent guides in node
+
+var indentGuideColor = "#2D2D2D"
+var canvas = document.createElement("canvas")
+canvas.width = 1; canvas.height = 2;
+var ctx = canvas.getContext("2d")
+imageData = ctx.getImageData(0,0,1,2)
+
+function getColor(color) {
+ ctx.fillStyle = color;
+ ctx.fillRect(0,0,1,2);
+ return Array.slice(ctx.getImageData(0,0,1,2).data).slice(0,4)
+}
+bgColor = getComputedStyle(ace.renderer.scroller).backgroundColor
+var a = [].concat(getColor(bgColor), getColor(indentGuideColor));
+a.forEach(function(val,i){imageData.data[i] = val})
+
+ctx.putImageData(imageData,0,0)
+image = canvas.toDataURL("png")
+
+var rule = "."+ace.renderer.$theme +" .ace_indent-guide {\n\
+ background: url(" + image +") right repeat-y;\n\
+}"
+console.log(rule)
+require("ace/lib/dom").importCssString(rule)
+
+*/
\ No newline at end of file
From 1513ad99e56aeb155b2c6e21768ab9a1d91f3327 Mon Sep 17 00:00:00 2001
From: nightwing
Date: Wed, 19 Sep 2012 16:57:48 +0400
Subject: [PATCH 043/165] update ChangeLog and package.json
---
ChangeLog.txt | 44 ++++++++++++++++++++++++++++++++++++++++++++
package.json | 2 +-
2 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 76b2313b..261f8cd8 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,47 @@
+2012.09.17, Version 0.1.0
+
+* New Features
+ - Multiple cursors and selections (https://c9.io/site/blog/2012/08/be-an-armenian-warrior-with-block-selection-on-steroids/)
+ - Fold buttons displayed in the gutter
+ - Indent Guides
+ - Completely reworked vim mode (Sergi Mansilla)
+ - Improved emacs keybindings
+ - Autoclosing of html tags (danyaPostfactum)
+
+* 20 New language modes
+ - Coldfusion (Russ)
+ - Diff
+ - GLSL (Ed Mackey)
+ - Go (Davide Saurino)
+ - Haxe (Jason O'Neil)
+ - Jade (Garen Torikyan)
+ - jsx (Syu Kato)
+ - LaTeX (James Allen)
+ - Less (John Roepke)
+ - Liquid (Bernie Telles)
+ - Lua (Lee Gao)
+ - LuaPage (Choonster)
+ - Markdown (Chris Spencer)
+ - PostgreSQL (John DeSoi)
+ - Powershell (John Kane)
+ - Sh (Richo Healey)
+ - SQL (Jonathan Camile)
+ - Tcl (Cristoph Hochreiner)
+ - XQuery (William Candillion)
+ - Yaml (Meg Sharkey)
+
+ * Live syntax checks
+ - for XQuery and JSON
+
+* New Themes
+ - Ambiance (Irakli Gozalishvili)
+ - Dreamweaver (Adam Jimenez)
+ - Github (bootstraponline)
+ - Tommorrow themes (https://github.com/chriskempson/tomorrow-theme)
+ - XCode
+
+* Many Small Enhancements and Bugfixes
+
2011.08.02, Version 0.2.0
* Split view (Julian Viereck)
diff --git a/package.json b/package.json
index 1dfd461d..86b2fd8e 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "ace",
"description": "Ajax.org Code Editor is a full featured source code highlighting editor that powers the Cloud9 IDE",
- "version": "0.2.0",
+ "version": "1.0.0",
"homepage" : "http://github.com/ajaxorg/ace",
"engines": {"node": ">= 0.6.0"},
"author": "Fabian Jakobs ",
From 3aca398f1d68acc41af768d839fd7d9ac6eb4625 Mon Sep 17 00:00:00 2001
From: nightwing
Date: Wed, 19 Sep 2012 21:32:40 +0400
Subject: [PATCH 044/165] fix active line color for solarized_dark theme
---
lib/ace/theme/solarized_dark.css | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/ace/theme/solarized_dark.css b/lib/ace/theme/solarized_dark.css
index a5b48472..49c386ef 100644
--- a/lib/ace/theme/solarized_dark.css
+++ b/lib/ace/theme/solarized_dark.css
@@ -37,7 +37,7 @@
.ace-solarized-dark .ace_marker-layer .ace_active_line,
.ace-solarized-dark .ace_marker-layer .ace_selection {
- background: #073642
+ background: rgba(255, 255, 255, 0.1)
}
.ace-solarized-dark.multiselect .ace_selection.start {
From dd0bbc7d8dbc40857279bd04adfdbc7ba2782e66 Mon Sep 17 00:00:00 2001
From: Garen Torikian
Date: Wed, 19 Sep 2012 11:06:42 -0700
Subject: [PATCH 045/165] fix my name's spelling
---
ChangeLog.txt | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 261f8cd8..e5d36574 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -14,7 +14,7 @@
- GLSL (Ed Mackey)
- Go (Davide Saurino)
- Haxe (Jason O'Neil)
- - Jade (Garen Torikyan)
+ - Jade (Garen Torikian)
- jsx (Syu Kato)
- LaTeX (James Allen)
- Less (John Roepke)
@@ -71,15 +71,14 @@
- SCAD (Jacob Hansson)
* Live syntax checks
- - Lint for Css using CSS Lint
+ - Lint for CSS using CSS Lint
- CoffeeScript
* New Themes
- Crimson Editor (iebuggy)
- Merbivore (Michael Schwartz)
- Merbivore soft (Michael Schwartz)
- - Solarized dark/light (David Alan
- Hjelle)
+ - Solarized dark/light (David Alan Hjelle)
- Vibrant Ink (Michael Schwartz)
* Small Features/Enhancements
@@ -92,10 +91,8 @@
highlight are not affected (Irakli Gozalishvili)
- Added setFontSize method
- Improved vi keybindings (Trent Ogren)
- - When unfocused make cursor transparent instead of removing it (Harutyun
- Amirjanyan)
- - Support for matching groups in tokenizer with arrays of tokens (Chris
- Spencer)
+ - When unfocused make cursor transparent instead of removing it (Harutyun Amirjanyan)
+ - Support for matching groups in tokenizer with arrays of tokens (Chris Spencer)
* Bug fixes
- Add support for the new OSX scroll bars
@@ -103,8 +100,7 @@
- Proper handling of unicode characters in JavaScript identifiers
- Fix remove lines command on last line (Harutyun Amirjanyan)
- Fix scroll wheel sluggishness in Safari
- - Make keyboard infrastructure route keys like []^$ the right way (Julian
- Viereck)
+ - Make keyboard infrastructure route keys like []^$ the right way (Julian Viereck)
2011.02.14, Version 0.1.6
From 10296a87a568229ce3c79234e0d7541b785bdda6 Mon Sep 17 00:00:00 2001
From: DanyaPostfactum
Date: Thu, 20 Sep 2012 05:10:58 +1000
Subject: [PATCH 046/165] Fix ctrl+- issue
---
lib/ace/mouse/default_handlers.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/ace/mouse/default_handlers.js b/lib/ace/mouse/default_handlers.js
index 08a18a64..f58b6644 100644
--- a/lib/ace/mouse/default_handlers.js
+++ b/lib/ace/mouse/default_handlers.js
@@ -44,7 +44,7 @@ function DefaultHandlers(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.onScroll.bind(mouseHandler));
+ editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler));
var exports = ["select", "startSelect", "drag", "dragEnd", "dragWait",
"dragWaitEnd", "startDrag", "focusWait"];
@@ -298,7 +298,10 @@ function DefaultHandlers(mouseHandler) {
this.setState("null");
};
- this.onScroll = function(ev) {
+ this.onMouseWheel = function(ev) {
+ if (ev.getShiftKey() || ev.getAccelKey()){
+ return;
+ }
var editor = this.editor;
var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);
if (isScrolable) {
From e5544b7114e5ff6c25ded4f8808cd72904fe1853 Mon Sep 17 00:00:00 2001
From: C9
Date: Thu, 20 Sep 2012 12:31:48 -0400
Subject: [PATCH 047/165] Many updates to the site, content and design
---
api/resources/csses/ace_api.css | 4 +-
.../javascripts/bootstrap-dropdown.js | 92 -----
api/resources/javascripts/bootstrap-tab.js | 135 ------
api/resources/javascripts/bootstrap.js | 389 ++++++++++++++++++
doc/resources/ace/skeleton/csses/ace_api.css | 4 +-
.../javascripts/bootstrap-dropdown.js | 92 -----
.../ace/skeleton/javascripts/bootstrap-tab.js | 135 ------
.../ace/skeleton/javascripts/bootstrap.js | 389 ++++++++++++++++++
.../ace/templates/common_layout.jade | 3 +-
doc/resources/common_layout.jade | 3 +-
doc/site/images/ace-logo.png | Bin 0 -> 60546 bytes
doc/site/images/ace-tab.png | Bin 0 -> 2655 bytes
doc/site/images/header-bg.png | Bin 0 -> 154 bytes
doc/site/images/textimage.png | Bin 0 -> 11444 bytes
doc/site/js/main.js | 2 +-
doc/site/style.css | 21 +-
index.html | 19 +-
17 files changed, 808 insertions(+), 480 deletions(-)
delete mode 100644 api/resources/javascripts/bootstrap-dropdown.js
delete mode 100644 api/resources/javascripts/bootstrap-tab.js
create mode 100644 api/resources/javascripts/bootstrap.js
delete mode 100644 doc/resources/ace/skeleton/javascripts/bootstrap-dropdown.js
delete mode 100644 doc/resources/ace/skeleton/javascripts/bootstrap-tab.js
create mode 100644 doc/resources/ace/skeleton/javascripts/bootstrap.js
create mode 100644 doc/site/images/ace-logo.png
create mode 100644 doc/site/images/ace-tab.png
create mode 100644 doc/site/images/header-bg.png
create mode 100644 doc/site/images/textimage.png
diff --git a/api/resources/csses/ace_api.css b/api/resources/csses/ace_api.css
index 1958d3d4..92029312 100644
--- a/api/resources/csses/ace_api.css
+++ b/api/resources/csses/ace_api.css
@@ -515,7 +515,7 @@ header.filler {
.centerpiece {
min-height: 100%;
- padding: 10px 0;
+ padding: 20px 0;
}
/*
@@ -532,7 +532,7 @@ header.filler {
}
#sidebar {
- margin-top: 9px;
+ margin-top: 5px;
/*background: url(../images/sidebar-border.png) repeat-y right 0;*/
margin-left: 12px;
/* width: 280px;*/
diff --git a/api/resources/javascripts/bootstrap-dropdown.js b/api/resources/javascripts/bootstrap-dropdown.js
deleted file mode 100644
index 54b61c5e..00000000
--- a/api/resources/javascripts/bootstrap-dropdown.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/* ============================================================
- * bootstrap-dropdown.js v2.0.2
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function( $ ){
-
- "use strict"
-
- /* DROPDOWN CLASS DEFINITION
- * ========================= */
-
- var toggle = '[data-toggle="dropdown"]'
- , Dropdown = function ( element ) {
- var $el = $(element).on('click.dropdown.data-api', this.toggle)
- $('html').on('click.dropdown.data-api', function () {
- $el.parent().removeClass('open')
- })
- }
-
- Dropdown.prototype = {
-
- constructor: Dropdown
-
- , toggle: function ( e ) {
- var $this = $(this)
- , selector = $this.attr('data-target')
- , $parent
- , isActive
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- $parent = $(selector)
- $parent.length || ($parent = $this.parent())
-
- isActive = $parent.hasClass('open')
-
- clearMenus()
- !isActive && $parent.toggleClass('open')
-
- return false
- }
-
- }
-
- function clearMenus() {
- $(toggle).parent().removeClass('open')
- }
-
-
- /* DROPDOWN PLUGIN DEFINITION
- * ========================== */
-
- $.fn.dropdown = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('dropdown')
- if (!data) $this.data('dropdown', (data = new Dropdown(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.dropdown.Constructor = Dropdown
-
-
- /* APPLY TO STANDARD DROPDOWN ELEMENTS
- * =================================== */
-
- $(function () {
- $('html').on('click.dropdown.data-api', clearMenus)
- $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
- })
-
-}( window.jQuery );
\ No newline at end of file
diff --git a/api/resources/javascripts/bootstrap-tab.js b/api/resources/javascripts/bootstrap-tab.js
deleted file mode 100644
index 070deb8f..00000000
--- a/api/resources/javascripts/bootstrap-tab.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ========================================================
- * bootstrap-tab.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#tabs
- * ========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================== */
-
-
-!function ($) {
-
- "use strict"; // jshint ;_;
-
-
- /* TAB CLASS DEFINITION
- * ==================== */
-
- var Tab = function (element) {
- this.element = $(element)
- }
-
- Tab.prototype = {
-
- constructor: Tab
-
- , show: function () {
- var $this = this.element
- , $ul = $this.closest('ul:not(.dropdown-menu)')
- , selector = $this.attr('data-target')
- , previous
- , $target
- , e
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- if ( $this.parent('li').hasClass('active') ) return
-
- previous = $ul.find('.active a').last()[0]
-
- e = $.Event('show', {
- relatedTarget: previous
- })
-
- $this.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- $target = $(selector)
-
- this.activate($this.parent('li'), $ul)
- this.activate($target, $target.parent(), function () {
- $this.trigger({
- type: 'shown'
- , relatedTarget: previous
- })
- })
- }
-
- , activate: function ( element, container, callback) {
- var $active = container.find('> .active')
- , transition = callback
- && $.support.transition
- && $active.hasClass('fade')
-
- function next() {
- $active
- .removeClass('active')
- .find('> .dropdown-menu > .active')
- .removeClass('active')
-
- element.addClass('active')
-
- if (transition) {
- element[0].offsetWidth // reflow for transition
- element.addClass('in')
- } else {
- element.removeClass('fade')
- }
-
- if ( element.parent('.dropdown-menu') ) {
- element.closest('li.dropdown').addClass('active')
- }
-
- callback && callback()
- }
-
- transition ?
- $active.one($.support.transition.end, next) :
- next()
-
- $active.removeClass('in')
- }
- }
-
-
- /* TAB PLUGIN DEFINITION
- * ===================== */
-
- $.fn.tab = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('tab')
- if (!data) $this.data('tab', (data = new Tab(this)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tab.Constructor = Tab
-
-
- /* TAB DATA-API
- * ============ */
-
- $(function () {
- $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
- e.preventDefault()
- $(this).tab('show')
- })
- })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/api/resources/javascripts/bootstrap.js b/api/resources/javascripts/bootstrap.js
new file mode 100644
index 00000000..79241e74
--- /dev/null
+++ b/api/resources/javascripts/bootstrap.js
@@ -0,0 +1,389 @@
+/* ============================================================
+ * bootstrap-dropdown.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle=dropdown]'
+ , Dropdown = function (element) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function (e) {
+ var $this = $(this)
+ , $parent
+ , isActive
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) {
+ $parent.toggleClass('open')
+ $this.focus()
+ }
+
+ return false
+ }
+
+ , keydown: function (e) {
+ var $this
+ , $items
+ , $active
+ , $parent
+ , isActive
+ , index
+
+ if (!/(38|40|27)/.test(e.keyCode)) return
+
+ $this = $(this)
+
+ e.preventDefault()
+ e.stopPropagation()
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
+
+ $items = $('[role=menu] li:not(.divider) a', $parent)
+
+ if (!$items.length) return
+
+ index = $items.index($items.filter(':focus'))
+
+ if (e.keyCode == 38 && index > 0) index-- // up
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index = 0
+
+ $items
+ .eq(index)
+ .focus()
+ }
+
+ }
+
+ function clearMenus() {
+ getParent($(toggle))
+ .removeClass('open')
+ }
+
+ function getParent($this) {
+ var selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.length || ($parent = $this.parent())
+
+ return $parent
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.dropdown = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(function () {
+ $('html')
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
+ $('body')
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+ })
+
+}(window.jQuery);
+/* ========================================================
+ * bootstrap-tab.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function (element) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+ , e
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active a').last()[0]
+
+ e = $.Event('show', {
+ relatedTarget: previous
+ })
+
+ $this.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(function () {
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+ })
+
+}(window.jQuery);
+/* ==========================================================
+ * bootstrap-affix.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#affix
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* AFFIX CLASS DEFINITION
+ * ====================== */
+
+ var Affix = function (element, options) {
+ this.options = $.extend({}, $.fn.affix.defaults, options)
+ this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
+ this.$element = $(element)
+ this.checkPosition()
+ }
+
+ Affix.prototype.checkPosition = function () {
+ if (!this.$element.is(':visible')) return
+
+ var scrollHeight = $(document).height()
+ , scrollTop = this.$window.scrollTop()
+ , position = this.$element.offset()
+ , offset = this.options.offset
+ , offsetBottom = offset.bottom
+ , offsetTop = offset.top
+ , reset = 'affix affix-top affix-bottom'
+ , affix
+
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
+
+ affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
+ false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
+ 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
+ 'top' : false
+
+ if (this.affixed === affix) return
+
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
+
+ this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
+ }
+
+
+ /* AFFIX PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.affix = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('affix')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('affix', (data = new Affix(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.affix.Constructor = Affix
+
+ $.fn.affix.defaults = {
+ offset: 0
+ }
+
+
+ /* AFFIX DATA-API
+ * ============== */
+
+ $(window).on('load', function () {
+ $('[data-spy="affix"]').each(function () {
+ var $spy = $(this)
+ , data = $spy.data()
+
+ data.offset = data.offset || {}
+
+ data.offsetBottom && (data.offset.bottom = data.offsetBottom)
+ data.offsetTop && (data.offset.top = data.offsetTop)
+
+ $spy.affix(data)
+ })
+ })
+
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/doc/resources/ace/skeleton/csses/ace_api.css b/doc/resources/ace/skeleton/csses/ace_api.css
index 1958d3d4..92029312 100644
--- a/doc/resources/ace/skeleton/csses/ace_api.css
+++ b/doc/resources/ace/skeleton/csses/ace_api.css
@@ -515,7 +515,7 @@ header.filler {
.centerpiece {
min-height: 100%;
- padding: 10px 0;
+ padding: 20px 0;
}
/*
@@ -532,7 +532,7 @@ header.filler {
}
#sidebar {
- margin-top: 9px;
+ margin-top: 5px;
/*background: url(../images/sidebar-border.png) repeat-y right 0;*/
margin-left: 12px;
/* width: 280px;*/
diff --git a/doc/resources/ace/skeleton/javascripts/bootstrap-dropdown.js b/doc/resources/ace/skeleton/javascripts/bootstrap-dropdown.js
deleted file mode 100644
index 54b61c5e..00000000
--- a/doc/resources/ace/skeleton/javascripts/bootstrap-dropdown.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/* ============================================================
- * bootstrap-dropdown.js v2.0.2
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function( $ ){
-
- "use strict"
-
- /* DROPDOWN CLASS DEFINITION
- * ========================= */
-
- var toggle = '[data-toggle="dropdown"]'
- , Dropdown = function ( element ) {
- var $el = $(element).on('click.dropdown.data-api', this.toggle)
- $('html').on('click.dropdown.data-api', function () {
- $el.parent().removeClass('open')
- })
- }
-
- Dropdown.prototype = {
-
- constructor: Dropdown
-
- , toggle: function ( e ) {
- var $this = $(this)
- , selector = $this.attr('data-target')
- , $parent
- , isActive
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- $parent = $(selector)
- $parent.length || ($parent = $this.parent())
-
- isActive = $parent.hasClass('open')
-
- clearMenus()
- !isActive && $parent.toggleClass('open')
-
- return false
- }
-
- }
-
- function clearMenus() {
- $(toggle).parent().removeClass('open')
- }
-
-
- /* DROPDOWN PLUGIN DEFINITION
- * ========================== */
-
- $.fn.dropdown = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('dropdown')
- if (!data) $this.data('dropdown', (data = new Dropdown(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.dropdown.Constructor = Dropdown
-
-
- /* APPLY TO STANDARD DROPDOWN ELEMENTS
- * =================================== */
-
- $(function () {
- $('html').on('click.dropdown.data-api', clearMenus)
- $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
- })
-
-}( window.jQuery );
\ No newline at end of file
diff --git a/doc/resources/ace/skeleton/javascripts/bootstrap-tab.js b/doc/resources/ace/skeleton/javascripts/bootstrap-tab.js
deleted file mode 100644
index 070deb8f..00000000
--- a/doc/resources/ace/skeleton/javascripts/bootstrap-tab.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ========================================================
- * bootstrap-tab.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#tabs
- * ========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================== */
-
-
-!function ($) {
-
- "use strict"; // jshint ;_;
-
-
- /* TAB CLASS DEFINITION
- * ==================== */
-
- var Tab = function (element) {
- this.element = $(element)
- }
-
- Tab.prototype = {
-
- constructor: Tab
-
- , show: function () {
- var $this = this.element
- , $ul = $this.closest('ul:not(.dropdown-menu)')
- , selector = $this.attr('data-target')
- , previous
- , $target
- , e
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- if ( $this.parent('li').hasClass('active') ) return
-
- previous = $ul.find('.active a').last()[0]
-
- e = $.Event('show', {
- relatedTarget: previous
- })
-
- $this.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- $target = $(selector)
-
- this.activate($this.parent('li'), $ul)
- this.activate($target, $target.parent(), function () {
- $this.trigger({
- type: 'shown'
- , relatedTarget: previous
- })
- })
- }
-
- , activate: function ( element, container, callback) {
- var $active = container.find('> .active')
- , transition = callback
- && $.support.transition
- && $active.hasClass('fade')
-
- function next() {
- $active
- .removeClass('active')
- .find('> .dropdown-menu > .active')
- .removeClass('active')
-
- element.addClass('active')
-
- if (transition) {
- element[0].offsetWidth // reflow for transition
- element.addClass('in')
- } else {
- element.removeClass('fade')
- }
-
- if ( element.parent('.dropdown-menu') ) {
- element.closest('li.dropdown').addClass('active')
- }
-
- callback && callback()
- }
-
- transition ?
- $active.one($.support.transition.end, next) :
- next()
-
- $active.removeClass('in')
- }
- }
-
-
- /* TAB PLUGIN DEFINITION
- * ===================== */
-
- $.fn.tab = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('tab')
- if (!data) $this.data('tab', (data = new Tab(this)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tab.Constructor = Tab
-
-
- /* TAB DATA-API
- * ============ */
-
- $(function () {
- $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
- e.preventDefault()
- $(this).tab('show')
- })
- })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/doc/resources/ace/skeleton/javascripts/bootstrap.js b/doc/resources/ace/skeleton/javascripts/bootstrap.js
new file mode 100644
index 00000000..79241e74
--- /dev/null
+++ b/doc/resources/ace/skeleton/javascripts/bootstrap.js
@@ -0,0 +1,389 @@
+/* ============================================================
+ * bootstrap-dropdown.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle=dropdown]'
+ , Dropdown = function (element) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function (e) {
+ var $this = $(this)
+ , $parent
+ , isActive
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) {
+ $parent.toggleClass('open')
+ $this.focus()
+ }
+
+ return false
+ }
+
+ , keydown: function (e) {
+ var $this
+ , $items
+ , $active
+ , $parent
+ , isActive
+ , index
+
+ if (!/(38|40|27)/.test(e.keyCode)) return
+
+ $this = $(this)
+
+ e.preventDefault()
+ e.stopPropagation()
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
+
+ $items = $('[role=menu] li:not(.divider) a', $parent)
+
+ if (!$items.length) return
+
+ index = $items.index($items.filter(':focus'))
+
+ if (e.keyCode == 38 && index > 0) index-- // up
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index = 0
+
+ $items
+ .eq(index)
+ .focus()
+ }
+
+ }
+
+ function clearMenus() {
+ getParent($(toggle))
+ .removeClass('open')
+ }
+
+ function getParent($this) {
+ var selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.length || ($parent = $this.parent())
+
+ return $parent
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.dropdown = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(function () {
+ $('html')
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
+ $('body')
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+ })
+
+}(window.jQuery);
+/* ========================================================
+ * bootstrap-tab.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function (element) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+ , e
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active a').last()[0]
+
+ e = $.Event('show', {
+ relatedTarget: previous
+ })
+
+ $this.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(function () {
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+ })
+
+}(window.jQuery);
+/* ==========================================================
+ * bootstrap-affix.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#affix
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* AFFIX CLASS DEFINITION
+ * ====================== */
+
+ var Affix = function (element, options) {
+ this.options = $.extend({}, $.fn.affix.defaults, options)
+ this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
+ this.$element = $(element)
+ this.checkPosition()
+ }
+
+ Affix.prototype.checkPosition = function () {
+ if (!this.$element.is(':visible')) return
+
+ var scrollHeight = $(document).height()
+ , scrollTop = this.$window.scrollTop()
+ , position = this.$element.offset()
+ , offset = this.options.offset
+ , offsetBottom = offset.bottom
+ , offsetTop = offset.top
+ , reset = 'affix affix-top affix-bottom'
+ , affix
+
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
+
+ affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
+ false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
+ 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
+ 'top' : false
+
+ if (this.affixed === affix) return
+
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
+
+ this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
+ }
+
+
+ /* AFFIX PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.affix = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('affix')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('affix', (data = new Affix(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.affix.Constructor = Affix
+
+ $.fn.affix.defaults = {
+ offset: 0
+ }
+
+
+ /* AFFIX DATA-API
+ * ============== */
+
+ $(window).on('load', function () {
+ $('[data-spy="affix"]').each(function () {
+ var $spy = $(this)
+ , data = $spy.data()
+
+ data.offset = data.offset || {}
+
+ data.offsetBottom && (data.offset.bottom = data.offsetBottom)
+ data.offsetTop && (data.offset.top = data.offsetTop)
+
+ $spy.affix(data)
+ })
+ })
+
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/doc/resources/ace/templates/common_layout.jade b/doc/resources/ace/templates/common_layout.jade
index 137bc570..817e3c73 100644
--- a/doc/resources/ace/templates/common_layout.jade
+++ b/doc/resources/ace/templates/common_layout.jade
@@ -39,8 +39,7 @@ mixin head
script(src='#{dirPrefix}resources/javascripts/bbq.js')
script(src="#{dirPrefix}resources/javascripts/jquery.collapse.js")
script(src="#{dirPrefix}resources/javascripts/jquery.cookie.js")
- script(src="#{dirPrefix}resources/javascripts/bootstrap-dropdown.js")
- script(src='#{dirPrefix}resources/javascripts/bootstrap-tab.js')
+ script(src="#{dirPrefix}resources/javascripts/bootstrap.js")
mixin endingScripts
diff --git a/doc/resources/common_layout.jade b/doc/resources/common_layout.jade
index 137bc570..817e3c73 100644
--- a/doc/resources/common_layout.jade
+++ b/doc/resources/common_layout.jade
@@ -39,8 +39,7 @@ mixin head
script(src='#{dirPrefix}resources/javascripts/bbq.js')
script(src="#{dirPrefix}resources/javascripts/jquery.collapse.js")
script(src="#{dirPrefix}resources/javascripts/jquery.cookie.js")
- script(src="#{dirPrefix}resources/javascripts/bootstrap-dropdown.js")
- script(src='#{dirPrefix}resources/javascripts/bootstrap-tab.js')
+ script(src="#{dirPrefix}resources/javascripts/bootstrap.js")
mixin endingScripts
diff --git a/doc/site/images/ace-logo.png b/doc/site/images/ace-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..886a8df3119423f1b37d8675855421f53b525bd5
GIT binary patch
literal 60546
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